JPA OneToMany - Collection est null

Je vais essayer de mettre en place une relation bidirectionnelle à l'aide de JPA. Je comprends qu'il est de la responsabilité de l'application afin de maintenir les deux côtés de la relation.

Par exemple, une Bibliothèque de plusieurs Livres. Dans la Bibliothèque de l'entité que j'ai:

@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);
  }
  ..
}

Le Livre-entité:

@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);
  }
  ..
}

Malheureusement, la collection à l'OneToMany côté est null. Ainsi, par exemple, un appel à setLibrary() échoue parce que ce.de la bibliothèque.getBooks().contient(ce) résultats dans une NullPointerException.

Est-ce un comportement normal? Dois-je créer une instance de la collecte de moi-même (ce qui semble un peu étrange), ou existe-il d'autres solutions?

OriginalL'auteur user3001511 | 2013-11-17