2012-11-27 132 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)