2010-07-16 42 views
2

我正在研究一個問題,其中有兩個「父」類,P和Q級聯全部刪除孤兒到「子」類,C.我在Hibernate中的直覺告訴我這是一個糟糕的主意,當代碼刪除P的一個實例(即session.delete(myP);)時,我得到一個錯誤消息:休眠在兩個父類的子類上的所有刪除孤兒

「已刪除對象將被級聯重新保存(從關聯刪除刪除的對象):[C#1]「

任何人都可以確認有一個單一的子類的父類是一個壞主意,當一個實例的P和Q的實例可以充當C的同一實例的父代?

謝謝!

回答

1

我的猜測是,如果您在同一事務中同時存在P和Q,同時更新P並從Q中刪除(反之亦然),那麼這隻會是一個問題。父母雙方應該爲交易增加一層複雜性,但它仍然應該按照你期望的方式工作。

session.beginTransaction(); 
P p = loadP(); 
p.remove(c); 
session.commit(); //okay 

session.beginTransaction(); 
P p = loadP(); 
Q q = loadQ(); 
p.remove(c); 
q.alter(c); 
session.commit(); //boom 
+0

謝謝你保持夢想活着。 – 2010-07-23 03:49:01