Hibernate:删除子集合中的元素会导致更新

时间:2012-08-21 19:37:59

标签: hibernate

我的集合映射文件包含以下关系:

<set inverse="false" lazy="true" name="collectionMembers" sort="unsorted" cascade="save-update,delete-orphan">
        <key>
            <column name="COLLECTION_CD" />
        </key>
        <one-to-many class="CollectionMember" />
    </set>
然后

CollectionMember映射文件包含以下双向关系:

<many-to-one name="collection" class="Collection" lazy="false">
        <column name="COLLECTION_CD" length="36" not-null="true" />
    </many-to-one>

所以Collection包含CollectionMembers的集合

我遇到的问题是,当我尝试通过从集合中删除CollectionMember来删除它时,我收到以下错误消息:

cannot update ("COLLECTION_MEMBER"."COLLECTION_CD") to NULL

为什么尝试在此处执行更新而不是删除?

由于

1 个答案:

答案 0 :(得分:2)

为什么尝试在此处执行更新而不是删除?

因为inverse="false"告诉Hibernate该集合负责关联,这意味着从集合中移除 - &gt; 删除行之间的关联 - &gt; 将外键设置为null

你可能想要的是inverse="true" cascade="all-delete-orphan"