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();
}
}
}
我有两个实体,它们以一对多的关系连接。
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();
}
}
}