2015-06-18 29 views
0

我有一個名爲菜單主要對象,使用對象的VoceMenu如何保存綁定到另一個對象與Hibernate

public class Menu implements Serializable{ 
... 
@OneToMany(mappedBy="menu", fetch=FetchType.EAGER) 
private List<VoceMenu> voceMenuList; 
... 
} 

列表持久對象的列表時,我編輯對象菜單,然後我保存它

... 
getCurrentSessionFactory().saveOrUpdate(menu); 
... 

我可以看到,在DB上,對象菜單的字段值被編輯,對象VoceMenu的字段沒有。

也許我想念一些東西。

+0

嘗試增加了一對多映射級聯= CascadeType.PERSIST –

+0

另外還有一點要考慮關於。 「VoceMenu」是否需要擁有自己的生命週期?如果你只在同一時間使用它,請考慮使用'@ ElementCollection' – roby

+0

謝謝。我嘗試使用cascade = CascadeType.PERSIST,但它似乎不適用於我。我發現這篇文章,我跟着他的例子,它似乎工作http://www.mkyong.com/hibernate/cascade-jpa-hibernate-annotation-common-mistake/ – MDP

回答

0

您是否在持續之前在VoceMenu對象上設置菜單?請嘗試以下操作:

Menu menu = new Menu(); 
VoceMenu voce = new VoceMenu(); 
voce.setMenu(menu); 
voceMenuList.add(voce); 

... 
getCurrentSessionFactory().saveOrUpdate(menu); 

此外,您還需要添加級聯= Cascade.PERSIST做到這一點:

@OneToMany(mappedBy="menu", fetch=FetchType.EAGER, cascade = Cascade.PERSIST) 
+0

感謝您的幫助。 VoceMenu內的Menu obejct沒問題。 謝謝。我嘗試使用cascade = CascadeType.PERSIST,但它似乎不適用於我。我發現這篇文章,我遵循他的例子,它似乎工作http://www.mkyong.com/hibernate/cascade-jpa-hibernate-annotation-common-mistake/ – MDP

相關問題