如何坚持父母对同一个短暂孩子的两次引用?

时间:2012-12-05 21:35:02

标签: hibernate persistence parent-child hibernate-mapping

我有一个休眠的父子关系,其中父母与其中一个孩子有一个独立的一对一关系。如果引用的孩子是短暂的,我怎样才能坚持父母和孩子?

我有这样的架构:

PARENT(PARENT_ID, SOME_DATA, SPECIAL_CHILD_ID)
CHILD(CHILD_ID, PARENT_ID, CHILD_DATA)

......和这样的实体:

class Parent {
    Child getSpecialChild();
    SortedSet<Child> getChildren();
}

class Child {
    Parent getParent();
}

我正在同一个事务中创建一个临时父级和临时子级。当我尝试持久化父级(级联specialChild和子级)时,我从数据库中得到一个唯一的约束错误,因为hibernate尝试生成两个插入(一个用于specialChild,另一个用于子级中的同一个子)。我已经使用调试器验证了specialChild和children()拥有瞬态子对象的相同实例

在我的实际业务案例中,我能够通过删除SPECIAL_CHILD_ID字段来解决此问题。但是,如果我真的需要这样做,那么我将如何正确地保存我的数据呢?

0 个答案:

没有答案