gpt4 book ai didi

java - 使用hibernate删除没有书籍的出版商

转载 作者:行者123 更新时间:2023-12-01 15:47:56 24 4
gpt4 key购买 nike

在编写书店应用程序时,我需要为 Book 和 Publisher 类放置映射。

图书与出版商具有 n 对 1 关系。与作者也具有 n 对 1 关系。我想为管理员用户提供删除书籍、作者或出版商的选项。

没有书籍的出版商没有任何意义。作者的情况也是如此。如果删除出版商的所有书籍,则必须从数据库中删除该出版商。如果某个作者的所有书籍都被删除,则该作者也应该被删除。听起来像是delete-orphan级联。但是多对一映射不支持delete-orphan。

另外,如果我删除一个出版商,他的所有书籍都应该被删除。同样,删除作者应该删除他的所有书籍。

目前,我的 Author、Publisher 和 Book 类定义如下,该书有字段“作者”和“出版商”。但是,“作者”或“出版商”没有引用他们的书籍。我必须重新定义这些类吗?我应该如何映射图书和出版商之间的关系?

感谢任何帮助

public class Book {
private Long bookId;
private Author author;
private Publisher publisher;
...
}

public class Publisher {
private Long publisherId;
private String name;
}

public class Author {
private Long authorId;
private String name;
}

<class name="Book" table="BOOKS">
<id name="bookId" column="BOOKID" type="long">
<generator class="native"/>
</id>
...
<many-to-one name="publisher" class="Publisher" column="PUBLISHERID" lazy="false" cascade="save-update"/>
...

最佳答案

您需要映射一个集合( <x-to-many> )并将其设置为 cascade=all 。这意味着,如果删除集合的所有者,集合元素也会被删除。

请注意,您还可以选择使用注释而不是 xml。它将是@OneToMany(cascade=CascadeType.ALL)

关于java - 使用hibernate删除没有书籍的出版商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6757109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com