我有两个@OneToMany
关系的实体。问题是我在保存期间在行getComps().add(comp)
上得到一个空指针。如果我明确地实例化comps
集,它可以正常工作。您可能知道,如果您有注释,则不需要这样做。我在该实体中有其他对象在没有显式实例化的情况下工作正常。可能的原因是什么?
//Main Method
public static void main(String argz[]){
....
Message message = new Message();
message.setMessage("Hello World!");
Comp comp = new Comp();
comp.setName(getName());
message.addComp(comp);
user.createMessage(message);
User aUser = userService.save(user);
}
//Message Entity
@JsonIgnore
@OneToMany(targetEntity = Comp.class,
mappedBy="message",
fetch=FetchType.LAZY,
cascade={CascadeType.All},
orphanRemoval=true)
private Set<Comp> comps;
public void addComp(Comp comp){
comp.setMessage(this);
getComps().add(comp);
}
//Comp Entity
@JsonIgnore
@JsonBackReference
@ManyToOne(cascade=CascadeType.PERSIST)
@JoinColumn(name="message_id")
private Message message;
答案 0 :(得分:1)
异常的原因在于代码
private Set<Comp> comps;
更改为
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "message")
private Set<Comp> comps = new HashSet<Comp>(0);
public Set<Comp> getComps() {
return this.comps;
}
public void setComps(Set<Comp> comps) {
this.comps = comps;
}