2012-11-27 54 views
0

enter image description here堅持兩個實體是指一個

我有三個實體如圖所示。

我想堅持的對象如本僞代碼

EA = new EA 
EB = new EB 
EC = new EC 
EB.link(EA) 
EC.link(EA) 
persist(EB) 
persist(EC) 

如果長期以實體B,實體A得到持續,但隨後實體C未能與以下錯誤堅持:

java.lang.IllegalStateException: org.hibernate.TransientObjectException: object is an unsaved transient instance - save the transient instance before merging: 

我控制實體C.我不想改變實體A和B中的任何東西。我怎樣才能讓所有這些實體持久化?

回答

1

我認爲這將工作:

EA = new EA 
EB = new EB 
EC = new EC 
EB.link(EA) 
persist(EB) 
EC.link(EB.getEA()) 
persist(EC) 
+0

雖然我還沒有嘗試過,似乎是去上班。唯一的問題是,在我所面臨的現實生活中,有一個EA列表,並得到一個我需要一個ID的列表。 EB.getEA(ID)。問題是隻有在實體持久化後我纔會生成EA的ID。所以我不能將EA的ID保存在EC中以便稍後獲得它們... – timsa7

0

enter image description here

我不得不改變其型號爲它很好地工作。

的僞代碼

EA=new EA 
EB=new EB 
EC=new EC 
EB.link(EA) 
EB.link(EC) 
persist(EB)