Hibernate 如何使用JPA删除具有OneToMany关系的外键条目
我有一本书,作者和分类实体 书与作者有一种Hibernate 如何使用JPA删除具有OneToMany关系的外键条目,hibernate,jpa,Hibernate,Jpa,我有一本书,作者和分类实体 书与作者有一种@onetone关系,书与类别也有一种@OneToMany关系 Book实体看起来像: @Entity public class Book { @Fetch(FetchMode.JOIN) @OneToOne(orphanRemoval = true, mappedBy = "book", optional = true) private Author author @Fetch(FetchMode.JOIN)
@onetone
关系,书与类别也有一种@OneToMany
关系
Book实体看起来像:
@Entity
public class Book {
@Fetch(FetchMode.JOIN)
@OneToOne(orphanRemoval = true, mappedBy = "book", optional = true)
private Author author
@Fetch(FetchMode.JOIN)
@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "book", targetEntity = Category.class, fetch = FetchType.EAGER)
private List<Category> categories = new ArrayList<>();
}
@Entity
public class Author {
@OneToOne(optional = false)
private Book book;
}
@Entity
public class Category {
@ManyToOne(cascade = CascadeType.ALL, optional = true)
@JoinColumn(name = "book_id", nullable = false)
private Book book;
}
类别实体如下所示:
@Entity
public class Book {
@Fetch(FetchMode.JOIN)
@OneToOne(orphanRemoval = true, mappedBy = "book", optional = true)
private Author author
@Fetch(FetchMode.JOIN)
@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "book", targetEntity = Category.class, fetch = FetchType.EAGER)
private List<Category> categories = new ArrayList<>();
}
@Entity
public class Author {
@OneToOne(optional = false)
private Book book;
}
@Entity
public class Category {
@ManyToOne(cascade = CascadeType.ALL, optional = true)
@JoinColumn(name = "book_id", nullable = false)
private Book book;
}
我对JPA删除有问题。在我的测试用例中,我有两个类别条目链接到一个图书条目。我希望在删除图书条目时,Category和Author的相应条目也会被删除
“我的服务”中的删除呼叫是:
bookRepository.delete(book);
然而,我发现只有作者条目被删除,所有其他条目仍然存在。你能发现我的设置有问题吗?在删除图书条目之前,我不想手动删除所有外键条目。尝试删除图书实体中的OrphanRemove属性或使用OrphanRemove=false尝试删除图书实体中的OrphanRemove属性或使用OrphanRemove=false