我有2个用OpenJPA映射的类。一个类是User
,并且将ManyToMany与AppProfile建立了关系。在数据库中,我有表关系USER_APP_PROFILES
(ID,User_ID,App_ID)。
我的班级打开JPA用户
@Table(name = "USER_PROFILE",schema = "BPMS")
public class UserProfile {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="USER_ID")
private Integer userID;
@ManyToMany(mappedBy="listUserProfile", fetch=FetchType.EAGER)
private List<AppProfile> listAppProfile;
}
我的班级AppProfile
@Table(name = "APP_PROFILE",schema = "BPMS")
public class AppProfile {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="APP_ID")
private Integer appID;
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(
name="USER_APP_PROFILES",
joinColumns={@JoinColumn(name="APP_ID", referencedColumnName="APP_ID")},
inverseJoinColumns={@JoinColumn(name="USER_ID", referencedColumnName="USER_ID")})
private List<UserProfile> listUserProfile;
}
在我添加List AppProfile之后,我通过EntitiyManager将用户提取到数据库中。
示例:
UserProfile userProfile //(populate with fetch in database)
AppProfile app = new App();
app.setAppID(11);
List<AppProfile> listApp = new ArrayList<AppProfile>();
listApp.add(app);
userProfile.setListAppProfile(listApp);
em.merge(userProfile)
如果需要JPA自动插入表USER_APP_PROFILES,我如何合并:
User_App_Profile_ID : new register
UserID : 1
AppID : 11
答案 0 :(得分:0)
尝试将@JoinTable
移至UserProfile
(相应地更改参数)并将cascade={CascadeType.ALL}
添加到@ManyToMany
注释。
这应该可以解决问题。