如何使用OpenJPA自动插入ManyToMany

时间:2016-01-25 16:10:56

标签: java jpa many-to-many openjpa

我有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

1 个答案:

答案 0 :(得分:0)

尝试将@JoinTable移至UserProfile(相应地更改参数)并将cascade={CascadeType.ALL}添加到@ManyToMany注释。

这应该可以解决问题。