我有以下情况:
关系:
Entity1 1...n Entity2
Entity2 1...n Entity3
Entity2 1...n Entity4
现在我有一个方法可以保存所有这些实体。 我使用级联自动保存Entity2,Entity3和Entity4
@OneToMany(mappedBy = "entity2", cascade = { PERSIST, MERGE, REMOVE })
目前我遇到了以下问题:
Not-null属性引用瞬态值 - 瞬态实例 必须在当前操作之前保存
这种情况可能吗? 或者我应该首先使用Entity2保存Entity1吗?
答案 0 :(得分:0)
可能你没有在子设置器中设置parentEntity,即你需要在B类中设置类A,所以当它在单个调用中保存所有层次结构时,它不会在映射的By列中获得父实体,
Class A{
@OneToMany(mappedBy = "parent" , Cascade = cascadeType.All)
List<B> children;
//children setter n getter
}
Class B{
@MAnyToOne
private A parent;
SetPArent(A a){ //like this you need to set for cascade saving.
this.parent = a;
}
}
现在Hibernate将负责在子表中设置父父(外部Id)列。这一切都可以保存在一个保存调用中。