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