hibernate:迁移到4.2(从3.6.10)打破了包集合

时间:2015-11-22 07:56:23

标签: java hibernate many-to-many hibernate-mapping

我在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>
实际上,父亲有一个孩子的集合。

从hiberante 3.6.10迁移到4.2.21后,我们遇到了以下问题:
更改父亲的子集合时,hibernate不会发出删除语句来删除FATHERS_CHILDREN表中的行。
因此,如果我们有一个包含三个子节点的父对象(child1,child2,child3),那么我们将子集合更改为仅包含child1(通过执行Father.children.clear()Father.children.add(child1)),在事务提交后,父亲的收藏品将有4个孩子(child1将在儿童收藏中预设两次)。

毋庸置疑,这适用于hibernate 3.6.10,而hibernate确实发出了删除语句来删除映射表中的行(FATHER_CHILDREN)。


更新
一些需要的信息:
父对象被分离并实际更新它我们执行:getSession().update(getSession().merge(Father))

此外,似乎这种情况仅在使用TestNG组依赖项时才会出现。

有什么想法吗?

0 个答案:

没有答案