2009-06-18 37 views
0

我正在使用Spring 2.5.6和Hibernate Annotations的組合。我有三個對象(表格或W/E)在考慮:客戶,地址,訂單。客戶爲地址設置了級聯DELETE_ORPHANS屬性。在將對象從一個父項移動到另一個父項時繞過DELETE_ORPHANS,休眠

我在做什麼是客戶合併,我將所有地址和訂單從一個客戶移動到另一個客戶,然後在舊客戶上設置禁用位。我通過從CustB中刪除地址並將它們添加到CustA來實現此目的。然後我用.update(custA)保存CustA,地址和訂單適當地移動,但是當我更新custB和禁用位時,它將刪除我移動的地址!

當我註釋掉DELETE_ORPHANS它工作正常。

如何停止DELETE_ORPHANS刪除移動的地址?我不應該從custB中刪除它們,只是更改其客戶參考?如果我在一個事務處理內部執行所有的操作,那麼每個操作都會在DELETE_ORPHAN啓用的情況下正確更新?

回答

0

我發現這個職位對Hibernate的論壇:https://forum.hibernate.org/viewtopic.php?f=1&t=961777&start=0約DELETE_ORPHANS休眠小組會談,以確保休眠,當關聯從一個對象中刪除它是確定刪除黑客

基督徒。他說要謹慎使用這一點。

基本上,不要使用delete_orphans,如果你可以幫助它。

如果您決定使用它,您必須執行額外的查詢來刪除條目,然後使用附加到新父對象的新標識符重新創建它們。

相關問題