从集合中删除实体时,java Hibernate不会删除DB记录
简单地从相关实体集合中删除一个实体不会删除数据库记录,对吗
例如:
currentUser.getBooks().remove(thisBook);
userDAO.update(currentUser);
不会从数据库中删除记录
我必须每次都明确地走到书道上说session.delete(thisBook)
吗?我认为Hibernate比它聪明得多,并且在保存或更新父实体时进行级联检查
我该如何解决这个问题
你可以在下面搜索框中键入要查询的问题!
简单地从相关实体集合中删除一个实体不会删除数据库记录,对吗
例如:
currentUser.getBooks().remove(thisBook);
userDAO.update(currentUser);
不会从数据库中删除记录
我必须每次都明确地走到书道上说session.delete(thisBook)
吗?我认为Hibernate比它聪明得多,并且在保存或更新父实体时进行级联检查
我该如何解决这个问题
# 1 楼答案
这完全取决于您在图书集合中定义的级联属性
# 2 楼答案
从实体
User
中的books
集合中删除实体Book
只会删除两个实体(Book
和User
)之间的关系,而不是Book
实体实例CASCADE
子句也不是你想要的。级联意味着,如果User
有books
,这是Book
实例的集合,当您删除User
实例时,图书实例也会被删除因此,阅读
getBooks().remove(thisBook)
作为从这个集合中删除这本书,而不是从数据库中删除这本书是的,如果你想删除这本书,你必须使用
session.remove(book)
(或者你DAO中的工具)# 3 楼答案
您需要在关系中指定级联类型
这里的例子: http://www.mkyong.com/hibernate/hibernate-cascade-example-save-update-delete-and-delete-orphan/