JPA 外键一对多

JPA Foreign Key OneToMany

我有两个实体,它们以一对多的关系连接。

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();
         }
     }
 }