私はPostgreSQL DBを使用していますので、JPA EntityManagerを使用してVACUUM FULL
を開始します。JPAでVACUUM FULLを実行
バージョン1
public void doVacuum(){
entityManager.createNativeQuery("VACUUM FULL").executeUpdate()
}
はTransactionRequiredException
バージョン2
@Transactional
public void doVacuum(){
entityManager.createNativeQuery("VACUUM FULL").executeUpdate()
}
が
"VACUUMは、トランザクションブロック内で実行することはできません" PersistenceExceptionをスローを投げますバージョン3
public void doVacuum(){
entityManager.createNativeQuery("VACUUM FULL").getResultList()
}
真空が行われるが、その後、私はPersistenceExceptionは「結果なし」を取得しない
このSQLコマンドを起動するための正しい方法は何ですか?
これは本当にJPAの範囲で行われるべきものですか?私はそれが悪いことではありませんが、それはいくつかのDBAの事ではないのですか? JPAを使用してDBAツールを開発しようとしていますか?しかし、まだ興味深い面。 – pirho
基本となる接続を取得し、raw JDBCにフォールバックしますか?接続を取得するメカニズムについては、こちらを参照してください。https://stackoverflow.com/questions/3493495/getting-database-connection-in-pure-jpa-setup –