從數據庫中刪除對象後出現錯誤。java.lang.IllegalStateException:在刪除對象後,事務處於非活動狀態,HIBERNATE
錯誤是:
java.lang.IllegalStateException: Transaction not active
org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:70)
我有簡單的應用程序。我在啓動時創建了EntityManagerFactory
。
每次如果我想用數據庫來工作,我創建EntityManager
工作結束後,我關閉它是這樣的:
啓動:
EntityManagerFactory emf = ....;
.
.
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
try {
em.persist(OBJECT TO SAVE); //REALLY NEW OBJECT
} catch (Exception e) {
em.getTransaction().rollback();
}
em.getTransaction().commit();
em.close();
所以,沒關係,我可以將某些對象保存到D b。
但如果我想刪除的項目,我得到一個異常java.lang.IllegalStateException: Transaction not active.
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
try {
em.remove(OBJECT TO REMOVE); //REALLY EXIST IN DB
} catch (Exception e) {
em.getTransaction().rollback();
}
em.getTransaction().commit();
em.close();
你能幫助我嗎?我不知道它是什麼....
編輯:我發現谷歌一些代碼,我試了一下:
em.getTransaction().begin();
em.remove(em.merge(OBJECT TO REMOVE));
em.getTransaction().commit();
它爲我工作!
在回滾之前,您必須檢查事務的狀態。 –
@kkkkk謝謝你的答覆,使用em.getTransaction()。isActive()'?檢查狀態。它返回'true' – haegeapo
在刪除對象之前嘗試刷新實體管理器。 –