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

Pre*_*hev 2 java hibernate

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

例如:

currentUser.getBooks().remove(thisBook);
userDAO.update(currentUser);
Run Code Online (Sandbox Code Playgroud)

不会从数据库中删除记录

我是否必须始终明确地转到bookDAO并且session.delete(thisBook)每次都说?我认为Hibernate比那更智能,并且在保存或更新父实体时进行级联检查.

我该如何解决这个问题?

Ste*_*lli 5

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

CASCADE条款也不是您要找的.级联意味着,如果Userhas books,即Book实例集合,则在删除User实例时,也会删除工作簿实例.

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

是的,如果你想删除你必须使用的书session.remove(book)(或DAO中的设施).