存在實體A引用(多對一)實體B,從B到A的反向(映射)引用。還有參考A到C和反向參考C到A. 當我發出entityManager.remove(A),然後flush(),「刪除」不gerenated!但也沒有例外。就像沒有調用remove()一樣。爲什麼會發生? 如果在刪除()之前,我們從反向引用B.listOfA和C.listOfA中提取A,則按預期生成「delete」。靜默地忽略remove()
另請注意my another question在那裏我得出的結論是孤兒刪除並不總是按預期工作。現在我開始懷疑,也許級聯效果很好,但在此之後,實際的級聯拆除就像我在這裏描述的那樣「吞食」了。
發佈實體映射以及刪除邏輯將有所幫助。您可能需要檢查您是否正在實體管理器上啓動並提交事務。 –
孤兒去除應該只適用於私人擁有的實體。如果你的'孤兒'與它有其他關係,那麼這些關係就必須被清除 - JPA不會爲你做。如果這些關係中的任何一個具有級聯設置,則可能會導致此類問題。刪除其他人引用的對象而不修復這些引用會導致在處理JPA緩存時出現各種問題。 – Chris