Java JPA EclipseLink ManyToMany INSERT

时间:2015-01-01 14:28:49

标签: java jpa nullpointerexception eclipselink

我的项目中有以下ManyToMany关联:

班级用户:

@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(
    joinColumns={@JoinColumn(name="user_id")},
    inverseJoinColumns={@JoinColumn(name="antrag_id")}
)
private List<Antrag> antraege;

和Antrag类:

@ManyToMany(mappedBy="antraege",cascade=CascadeType.ALL)
private List<User> users;

我正在尝试正确插入新记录,这 - 我认为工作不正确。当我试图“重新选择”所有用户的Antraege时,我在NullPointerException上获得antraege.getUsers()。只有当我重新启动java swing应用程序时,antraege.getUsers()才会返回null。

插入新的ManyToMany记录的代码:

Antrag antrag = new Antrag();
antrag.setBetreff(betreff);
antragBusiness.create(antrag);

betreuer.getAntraege().add(antrag);
currentUser.getAntraege().add(antrag);

userBusiness.update(betreuer);
userBusiness.update(currentUser);

我的create方法使用persist,update方法使用merge。

正如我所说,它们被正确插入到数据库中,但是当我尝试调用时:

List<Antrag> antraege = (List<Antrag>) user.getAntraege();

for(Antrag a : antraege){

    News n = new News();
    n.setDatum(a.getCreatedAt());
    n.setStatus(a.isStatus());
    n.setThema(a.getInfo());

    List<User> beteiligte = a.getUsers();       

    System.out.println("Amount users " + beteiligte.size());
    for (User z : beteiligte) {
        System.out.println(z.getNachname() + " " + z.getId());
        if(z.getId() != user.getId()){
            n.setZustaendiger(z);
        }
    }

    newsList.add(n);
}

- &GT;金额用户返回0 :(

所以 - 后果:Antraege被添加到用户,但是用户没有加入Antraege?

编辑:看起来,我插入新的ManyToMany记录是不正确的。 任何人都可以用正确的方式解释我吗?

0 个答案:

没有答案