有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从集合中删除实体时,java Hibernate不会删除DB记录

简单地从相关实体集合中删除一个实体不会删除数据库记录,对吗

例如:

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

不会从数据库中删除记录

我必须每次都明确地走到书道上说session.delete(thisBook)吗?我认为Hibernate比它聪明得多,并且在保存或更新父实体时进行级联检查

我该如何解决这个问题


共 (3) 个答案

  1. # 1 楼答案

    这完全取决于您在图书集合中定义的级联属性

  2. # 2 楼答案

    从实体User中的books集合中删除实体Book只会删除两个实体(BookUser)之间的关系,而不是Book实体实例

    CASCADE子句也不是你想要的。级联意味着,如果Userbooks,这是Book实例的集合,当您删除User实例时,图书实例也会被删除

    因此,阅读getBooks().remove(thisBook)作为从这个集合中删除这本书,而不是从数据库中删除这本书

    是的,如果你想删除这本书,你必须使用session.remove(book)(或者你DAO中的工具)