我正在使用 JSF 2.1、Netbeans 7.0.1、Glassfish 3.1.1、JPA + EJB。
例如,我有一个名为 User 的实体类,它与实体类 UserType 具有引用(多对一关系)。
与实体 UserType 关联的表 user_type 已经加载了所有可能的用户类型,并且不应将任何数据添加到该表中。表 user_type 中的数据仅用于选择。
在其中一种形式中,我要求用户为使用 h:selectOneListBox 标记创建的用户选择 UserType。在支持 bean 中,我创建了新的 UserType 对象,将选择的 id 设置为它并将 UserType 放入 User 实体类中。但是,创建的 UserType 对象中的所有其他字段都为空。
我的问题是,当我将 User 持久保存到数据库中时,JPA 会“理解”具有 User 实体引用的此类 id 的 UserType 已经存在于数据库中,并且只会更新(合并)现有记录而不尝试创建新记录。或者我必须通过其 id 从数据库中预加载所需的实体 UserType,然后将其放入 User 并要求 JPA 更新 UserType?