我在Father对象和Child对象之间有一个单向的多对多映射。 使用hbm.xml文件配置映射:
<bag name="children" table="FATHERS_CHILDREN" cascade="none" >
<key column="FATHER_ID" not-null="true" update="false" foreign-key="FATHERS_CHILDREN__FATHER_FK"/>
<many-to-many class="Child" column="CHILD_ID" foreign-key="FATHERS_CHILDREN__CHILD_FK"/>
</bag>
实际上,父亲有一个孩子的集合。Father.children.clear()
和Father.children.add(child1)
),在事务提交后,父亲的收藏品将有4个孩子(child1将在儿童收藏中预设两次)。
毋庸置疑,这适用于hibernate 3.6.10,而hibernate确实发出了删除语句来删除映射表中的行(FATHER_CHILDREN)。
更新
一些需要的信息:
父对象被分离并实际更新它我们执行:getSession().update(getSession().merge(Father))
此外,似乎这种情况仅在使用TestNG组依赖项时才会出现。
有什么想法吗?