【发布时间】:2009-06-18 14:36:48
【问题描述】:
我正在使用 Spring 2.5.6 和 Hibernate Annotations 的组合。我正在考虑三个对象(表格或 w/e):客户、地址、订单。客户为地址设置了 Cascade DELETE_ORPHANS 属性。
我正在做的是客户合并,我将所有地址和订单从一个客户转移到另一个客户,然后在旧客户上设置一个禁用位。我通过从 CustB 中删除地址并将它们添加到 CustA 来做到这一点。然后我用 .update(custA) 保存 CustA,地址和订单会适当移动,但是当我用禁用位更新 custB 时,它会删除我移动的地址!
当我注释掉 DELETE_ORPHANS 时,它工作正常。
如何阻止 DELETE_ORPHANS 删除移动的地址?我不应该将它们从 custB 中删除而只更改他们的客户参考吗?如果我在事务中完成所有操作而不是在每个操作之间分离对象,它们会在启用 DELETE_ORPHAN 的情况下正确更新吗?
【问题讨论】: