【问题标题】:Hibernate all-delete-orphan on a child class with two parent classes在具有两个父类的子类上休眠所有删除孤儿
【发布时间】:2011-03-17 02:02:22
【问题描述】:

我正在研究一个问题,其中有两个“父”类 P 和 Q 将所有删除孤儿级联到“子”类 C。我在 Hibernate 中的直觉告诉这确实是个坏主意当代码删除 P 的一个实例(即 session.delete(myP); )时,我收到一条错误消息,可能证实了这一点:

"删除的对象将被级联重新保存(从关联中删除已删除的对象):[C#1]"

当 P 的实例和 Q 的实例都可以充当同一个 C 实例的父类时,任何人都可以确认为一个子类拥有两个父类是一个坏主意吗?

谢谢!

【问题讨论】:

    标签: hibernate parent cascade cascading-deletes


    【解决方案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
    

    【讨论】:

    • 感谢您的梦想。
    猜你喜欢
    • 2012-02-07
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多