我有两个实体,它们以一对多关系连接。
public class Book{
@OneToMany(mappedBy = "book")
private List<Page> pages;
}
public class Page{
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "book_id")
public Book book;
}
因此,如果页面引用该书,则无法删除该书。 但是,只要引用一本书,如何防止页面被删除呢?
我希望有一个外键约束,只要页面对象引用任何书籍,就可以防止页面对象被删除。
感谢您的帮助!
最佳答案
我有一个使用@PreRemove 的解决方案。这样,如果页面链接到书籍,就可以防止页面被删除。
BookRelationShipExist:这只是您可以创建的异常,您也可以抛出任何其他类型的异常
public class Page{
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "book_id")
public Book book;
@PreRemove
private void preRemove() {
if (book != null) {
throw new BookRelationShipExist();
}
}
}
关于java - JPA 外键 OneToMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58957419/