2011-05-27 34 views
1

我有一個實體具有自定義設置的主鍵。 首先我刪除這個實體,然後用相同的主鍵重新創建這個實體。 這會導致提交/刷新時出現唯一的約束異常。 作爲一種解決方法,我在調用delete和create操作之間調用flush。 有沒有一種方法可以正確/更好地執行這些操作,即不需要在entitymanager上調用flush?Eclipselink刪除並創建導致唯一約束例外

感謝, 曼弗雷德

回答

0

em.remove(yourEntity)命令,即可預定實體從持久化上下文去除,之後從數據庫中,但它並沒有生效immediatelly。我可以想象,當你堅持新實體時,從持久化上下文和數據庫中刪除尚未發生。

您可以嘗試使用remove()命令之後的自定義JPQL查詢(如"DELETE FROM YourEntity ye WHERE ye.primary1 = :primary1 AND ye.primary2 = :primary2... whatever;")刪除此實體。我認爲這會立即從持久化上下文中刪除實體,但我不確定。試試吧,讓我們知道:)