Java Hibernate-从集合中删除项
我想澄清我所做的关于Java Hibernate-从集合中删除项,java,database,hibernate,parent-child,Java,Database,Hibernate,Parent Child,我想澄清我所做的关于Hibernate功能的假设。假设我有一个类a,其中a@OneToMany映射为B。这些B都有一个A父引用,以支持A上的mappedBy属性 当我从a中的集合中删除B时,hibernate是否能够自动清空B中的父字段?。根据我所做的所有测试,当从集合中删除某些内容时,它实际上不会通过更改子集合中的父引用来更新数据库 似乎支持我的声明,因为他们手动清空父引用,并将其从父集合中删除。每当从两端映射关联时,其中一端指定为活动端,另一端指定为被动端。(被动端是使用mappedBy=或
Hibernate
功能的假设。假设我有一个类a
,其中a@OneToMany
映射为B
。这些B都有一个A
父引用,以支持A上的mappedBy
属性
当我从a
中的集合中删除B
时,hibernate是否能够自动清空B
中的父字段?。根据我所做的所有测试,当从集合中删除某些内容时,它实际上不会通过更改子集合中的父引用来更新数据库
似乎支持我的声明,因为他们手动清空父引用,并将其从父
集合中删除。每当从两端映射关联时,其中一端指定为活动端,另一端指定为被动端。(被动端是使用mappedBy=
或inverse=“true”
映射的端)
当活动端发生更改时,Hibernate不会也不能更新集合的被动端,因为它只能在刷新时检测此类更改。因此,调用代码来修改关联的两端,以确保对象模型始终处于一致状态,这被认为是一种良好的实践
Hibernate本身并不关心关联的两端是否一致,因为它只在刷新数据库时查看活动端
映射一对多关联时,应将一对多端指定为被动。您链接到的hibernate手册部分试图解释原因