2010-05-06 5 views
0

I ont une table d'association ternaire créée à l'aide du mappage suivant:(N) Hibernate: suppression de lignes d'association ternaire orphelins lorsque soit rangée associée est supprimée

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

j'ai 3 tables, Foo, bar, et FooToBar.

Lorsque je supprime une ligne de la table Foo, la ou les lignes associées dans FooToBar sont automatiquement supprimées. C'est bon.

Lorsque je supprime une ligne de la table Barre, la ou les lignes associées dans FooToBar restent, avec une référence périmée à un ID de barre qui n'existe plus. C'est mauvais.

Comment puis-je modifier mon hbm.xml pour supprimer les lignes obsolètes FooToBar lors de la suppression de la table Bar?

+0

Pourriez-vous également ajouter vos mappages Foo et Bar? – s1mm0t

Répondre

0

Je n'ai pas testé ... mais vous pouvez sortir par FooToBar mapping Bar aussi, comme celui-ci:

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

Gardez à l'esprit NH ne sait pas que foo1[bar1] et bar1[foo1] représentent la même ligne , alors soyez prudent avec l'état en mémoire (c'est-à-dire, n'accédez pas aux éléments des deux côtés dans la même session)

Questions connexes