0
我在JPA中使用EntityListener時遇到問題。當孩子被孤兒移除時EntityListener不工作
該項目是基於:
JPA 2.1。
的EclipseLink 2.6.3
的MySQL 5.7.11
有一個實體的作者和圖書,作者有書和oprhanRemoval = true的一對多關係。
如果我得到數據庫的作者,我刪除對書籍的引用並保留作者。這本書被刪除,但聽衆沒有運行
代碼是自我解釋
@Entity
@Table(name = "ges_autor")
public class Author implements Serializable, ItemIf {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@OneToMany(mappedBy = "author",cascade = {CascadeType.ALL}, fetch = FetchType.LAZY, orphanRemoval = true)
//@PrivateOwned I have tried it without result
protected List<Book> books;
//getters y setters
}
@Entity
@Table(name = "ges_book")
@EntityListeners({BookListener.class})
public class Book implements Serializable, ItemIf {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@ManyToOne
@JoinColumn(name="autor_id")
protected Author author;
//getters y setters
}
public class BookListener {
@PrePersist
private prePersist(Book libro){
System.out.println("Listener libro persist ejecutado");
}
@PreUpdate
private preUpdate(Book libro){
System.out.println("Listener libro update ejecutado");
}
@PreRemove
private preRemove(Book libro){
System.out.println("Listener libro remove ejecutado");
}
}
要重現錯誤:
Author autor = getFacade().find(id);
autor.getLibros().remove(libro);
getEntityManager().merge(autor);
的orphanRemoval工作和書籍被刪除,但在刪除前聽衆無法正常工作