如何自动删除多对多关联(级联)

时间:2009-10-15 01:54:25

标签: nhibernate many-to-many nhibernate-mapping cascade

在我的数据库中,我拥有具有多对多关系的用户和用户组。用户有一组UserGroup,UserGroup域对象看不到用户。

<class name="User" table="UserTable">
    <set name="UserGroup" cascade="save-update" access="field.pascalcase-underscore" table="User2UserGroup">
        <key column="User_Id" />
        <many-to-many class="UserGroup" column="UserGroup_Id" />
    </set>
    ...

我想要实现的是当我删除用户或用户组时,nhibernate从联结表中删除相关性。此外,用户和组是子对象,我们称之为域。域名cascade="all-delete-orphans",因此当域被删除时,它会级联删除其所有用户组和用户组。

返回User&lt; - &gt; UserGroup关系:如果我理解正确,我不能使用涉及删除的任何形式的级联,因为我只想删除两个对象之间的关联而不是相关对象本身。 (一个群体不会消失,即使它是一个孤儿。而一个没有群体的用户在我的世界中是有效的 - 他根本没有权利做任何事情。)

我需要查看事件/拦截器吗?或者我可以通过控制映射来实现我想要实现的目标吗?

1 个答案:

答案 0 :(得分:2)

如果您使用支持它的数据库,您是否可以以外键约束的形式在数据库本身上设置级联?