java - 从集合中删除实体时,Hibernate不会删除数据库记录

标签 java hibernate

只需从一组相关实体中删除一个实体,就不会删除数据库记录,对吗?

例如:

currentUser.getBooks().remove(thisBook);
userDAO.update(currentUser);

不会从数据库中删除记录

我是否必须始终明确地去bookDAO并每次都说session.delete(thisBook)?我虽然认为Hibernate比这要聪明得多,并且会在保存或更新父实体时进行级联检查。

我该如何解决?

最佳答案

从实体Book中的books集合中删除实体User只会删除两个实体(BookUser)之间的关系,而不是Book实体实例。
CASCADE子句也不是您想要的。级联意味着,如果User具有books,即Book实例的集合,则在删除User实例时,书本实例也将被删除。

因此,请阅读getBooks().remove(thisBook),将其从此 Collections 中而不是从数据库中删除。

是的,如果要删除书,则必须使用session.remove(book)(或DAO中的工具)。

关于java - 从集合中删除实体时,Hibernate不会删除数据库记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9158429/

相关文章:

java - 使用动态规划复制书籍

java - JApplet:设置框架的大小

Hibernate 4.1.11 hql 删除查询列表中的位置

hibernate 选择具有给定属性的集合元素

java - 我们可以在hibernate中的选择或更新查询中使用表名而不是java类名吗?

java - 如何在 HQL (hibernate sql) 中使用一个 like 运算符在多列中进行搜索

java - 如何深拷贝一个不规则的二维数组

java - 需要一些帮助!

java - 为方法返回对象编写 junit 测试

java - Hibernate 更新 - 在 where 子句中按父参数过滤时出现异常