只需从一组相关实体中删除一个实体,就不会删除数据库记录,对吗?
例如:
currentUser.getBooks().remove(thisBook);
userDAO.update(currentUser);
不会从数据库中删除记录
我是否必须始终明确地去bookDAO并每次都说
session.delete(thisBook)
?我虽然认为Hibernate比这要聪明得多,并且会在保存或更新父实体时进行级联检查。我该如何解决?
最佳答案
从实体Book
中的books
集合中删除实体User
只会删除两个实体(Book
和User
)之间的关系,而不是Book
实体实例。CASCADE
子句也不是您想要的。级联意味着,如果User
具有books
,即Book
实例的集合,则在删除User
实例时,书本实例也将被删除。
因此,请阅读getBooks().remove(thisBook)
,将其从此 Collections 中而不是从数据库中删除。
是的,如果要删除书,则必须使用session.remove(book)
(或DAO中的工具)。
关于java - 从集合中删除实体时,Hibernate不会删除数据库记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9158429/