保存具有@OneToMany关系的实体时的JPA2 NullPointerException

时间:2013-06-04 17:49:26

标签: java hibernate spring-mvc jpa-2.0 one-to-many

我有两个@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;

1 个答案:

答案 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;
}