Hibernate - 在一个事务中保存一些实体

时间:2014-11-15 16:36:45

标签: hibernate entity cascade

我有以下情况:

  • Entity1
  • Entity2
  • Entity3
  • Entity4

关系:

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吗?

1 个答案:

答案 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)列。这一切都可以保存在一个保存调用中。