2014-11-15 52 views
0

我有以下情形:休眠 - 節省一些實體在一個事務中

  • 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 }) 

目前,我得到了以下問題:

非空屬性引用瞬態值 - 瞬態的實例 必須當前操作

之前被保存

那麼這種情況可能嗎? 還是應該用Entity2保存第一個Entity1?

回答

0

可能ü沒有在孩子設置器parentEntity,ieyou需要設置A類B類,所以當它保​​存在單一通話的層次,它不映射到右列的母公司,

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將負責設置子表中的父父(外部標識)列。並且它可以保存在單個保存調用中。