2011-12-13 36 views
0

我對分離實體的刪除操作有疑問。對分離實體的「刪除」操作

根據規範 「如果X是分離實體,則刪除操作將拋出IllegalArgumentException異常(否則事務提交將失敗)。」

但是,刪除操作可以對分離的實體有效。考慮交易範圍持久性上下文的以下情況:

1)實體在事務T1中的數據庫中持久化。所以它變得分離。 2)在事務T2中爲這個分離的實體進行移除調用。

因爲實體存在於數據庫中,所以remove調用應該是有效的,並且實體應該作爲事務T2的結果從數據庫中刪除。但是根據規範,應該拋出一個異常或者事務提交失敗。

我在這裏錯過了什麼嗎?是什麼原因?

+0

你正在使用什麼版本的hibernate,以及如何刪除detachable實體,請發佈你的代碼。 – subodh

+0

我正在使用JSF ....沒有與此問題相關的代碼。 – Shemil

+0

這與JSF無關。這與JPA有關。 – BalusC

回答

4

detached entitiesnon managed entities,並且您試圖刪除非託管實體,如果要刪除它,則必須將其設置爲managed state。 或另一種方法是找出分離實體的引用並嘗試刪除。

getEntityManager().getReference("detached"); 
remove("reference"); 

我不確定上述線路,但您可以嘗試。

+0

是....這個程序是正確的....也就是說,我們需要使它「管理」..然後它是可能的刪除。 – Shemil