我正在使用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?
答案 0 :(得分:1)
从<h:selectOneListBox>
组件中,我认为您应该只获得ID
的{{1}}。之后,您可以要求EJB为您创建关系。它应该是这样的:
UserType