持久化实体,引用JPA中的其他实体类

时间:2012-01-12 06:46:41

标签: jpa jsf-2 merge entity persist

我正在使用JSF 2.1,Netbeans 7.0.1,Glassfish 3.1.1,JPA + EJB。

例如,我有一个名为User的实体类,它与实体类UserType有引用(多对一关系)。

与实体UserType关联的表user_type已加载了所有可能的用户类型,并且不应将任何数据添加到此表中。表user_type中的数据仅用于选择。

在其中一个表单中,我要求用户为使用创建的用户选择UserType h:selectOneListBox标签。在支持bean中,我创建了新的UserType对象,为其设置了所选的id,并将UserType放入User实体类中。但是,UserType的创建对象中的所有其他字段都为空。

我的问题是,当我坚持用户进入数据库时​​,JPA会“理解”用户实体引用的具有此类ID的UserType已经存在于数据库中,并且只会更新(合并)现有记录而不会尝试创建新的一个。 或者我必须通过其id从数据库中预加载所需的实体UserType,然后将其放入User并询问JPA以更新UserType?

1 个答案:

答案 0 :(得分:1)

<h:selectOneListBox>组件中,我认为您应该只获得ID的{​​{1}}。之后,您可以要求EJB为您创建关系。它应该是这样的:

UserType