(N)Hibernate:删除任一关联行时删除孤立的三元关联行

时间:2010-05-06 01:55:02

标签: sql nhibernate nhibernate-mapping

我使用以下映射创建了一个三元关联表:

<map name="Associations" table="FooToBar">
    <key column="Foo_id"/>
    <index-many-to-many class="Bar" column="Bar_id"/>
    <element column="AssociationValue" />
</map>

我有3张桌子,Foo,Bar和FooToBar。

当我从Foo表中删除一行时,FooToBar中的相关行(或多行)会自动删除。这很好。

当我从Bar表中删除一行时,FooToBar中的相关行(或多行)仍然存在,并且对不再存在的Bar id的陈旧引用。这很糟糕。

如何在从Bar表中删除时修改我的hbm.xml以删除过时的FooToBar行?

1 个答案:

答案 0 :(得分:0)

我还没有对此进行过测试...但你可以通过在Bar中映射FooToBar来逃避,就像这样:

<map name="Associations" table="FooToBar">
    <key column="Bar_id"/>
    <index-many-to-many class="Foo" column="Foo_id"/>
    <element column="AssociationValue" />
</map>

请记住NH不知道foo1[bar1]bar1[foo1]代表同一行,所以要小心内存中的状态(也就是说,不要访问来自双方的元素)同一会议)