我正在研究一个问题,其中有两个“父”类,P和Q,它们将所有删除的孤儿级联到一个“子”类C。我在Hibernate中的直觉告诉我,这真的是一个坏主意,当代码删除P的一个实例(即session.delete(myP);)时,我得到一条错误消息,可能证实了这一点:
“已删除的对象将通过层叠(从关联中删除已删除的对象)重新保存: C#1”
当P的实例和Q的实例都可以充当C的同一实例的父类时,谁能确认让一个子类有两个父类不是一个好主意吗?
谢谢!
发布于 2010-07-23 00:52:38
我的猜测是,只有在同一事务中同时有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(); //boomhttps://stackoverflow.com/questions/3267242
复制相似问题