我有一个休眠的父子关系,其中父母与其中一个孩子有单独的一对一关系。如果引用的孩子是短暂的,我怎样才能坚持父母和孩子?
我有这样的架构:
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 字段来解决这个问题。但是,如果我真的需要这样做,我将如何正确地保存我的数据?