(N) Hibernate: удаление потерянных строк троичной ассоциации, когда удаляется любая связанная строка - PullRequest
0 голосов
/ 06 мая 2010

У меня есть таблица троичной ассоциации, созданная с использованием следующего сопоставления:

<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, который больше не существует. Это плохо.

Как я могу изменить мой hbm.xml для удаления устаревших строк FooToBar при удалении из таблицы Bar?

1 Ответ

0 голосов
/ 06 мая 2010

Я не проверял это ... но вы могли бы уйти, также отобразив FooToBar в Bar, например:

<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] представляют одну и ту же строку, поэтому будьте осторожны с состоянием в памяти (то есть не обращайтесь к элементам с обеих сторон в одном сеансе)

...