如何使用JPA

时间:2015-12-03 06:00:16

标签: hibernate jpa

我有书籍,作者和类别实体。

图书与作者有@OneToOne的关系,而图书与图书的关系也有@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;
}

我遇到了JPA删除问题。在我的测试用例中,我有两个与一个Book条目相关联的Category条目。我希望在删除Book条目时,Category和Author的相应条目也会删除。

我的服务中的删除电话是:

bookRepository.delete(book);

但是我发现只删除了作者条目,所有其他条目仍然存在。你能在我的设置中发现错误吗?我不想在删除Book条目之前手动删除所有外键条目。

0 个答案:

没有答案