0

My Collection 映射文件包含以下关系:

<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

为什么它试图在这里执行更新而不是删除?

谢谢

4

1 回答 1

2

为什么它试图在这里执行更新而不是删除?

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

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

于 2012-08-23T11:25:51.017 回答