【发布时间】:2013-11-17 12:42:00
【问题描述】:
我正在尝试使用 JPA 建立双向关系。我了解维护双方关系是应用程序的责任。
例如,图书馆有多本书。在图书馆实体中,我有:
@Entity
public class Library {
..
@OneToMany(mappedBy = "library", cascade = CascadeType.ALL)
private Collection<Book> books;
public void addBook(Book b) {
this.books.add(b);
if(b.getLibrary() != this)
b.setLibrary(this);
}
..
}
图书实体是:
@Entity
public class Book {
..
@ManyToOne
@JoinColumn(name = "LibraryId")
private Library library;
public void setLibrary(Library l) {
this.library = l;
if(!this.library.getBooks().contains(this))
this.library.getBooks().add(this);
}
..
}
不幸的是,OneToMany 端的集合为空。例如,调用 setLibrary() 会失败,因为 this.library.getBooks().contains(this) 会导致 NullPointerException。
这是正常行为吗?我应该自己实例化集合(这似乎有点奇怪),还是有其他解决方案?
【问题讨论】:
标签: java jpa nullpointerexception