我的项目中有以下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记录是不正确的。 任何人都可以用正确的方式解释我吗?