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 명령을 시작하는 올바른 방법은 무엇입니까?
public void doVacuum(){
org.hibernate.Session session = entityManager.unwrap(org.hibernate.Session);
org.hibernate.internal.SessionImpl sessionImpl = (SessionImpl) session; // required because Session doesn't provide connection()
java.sql.Connection connection = sessionImpl.connection();
connection.prepareStatement("VACUUM FULL").execute()
}
는 JPA 범위에서 수행해야이 정말 뭔가를인가 : 알라이 헤이로 – pirho
기본 연결을 가져 와서 원시 JDBC로 폴백 하시겠습니까? 연결을위한 메커니즘은 다음을 참조하십시오. https://stackoverflow.com/questions/3493495/getting-database-connection-in-pure-jpa-setup –