Bonjour,
Mon application utilise une relation many-to-many bidirectionnelle entre des
family et des
model (une famille contient une liste de modèles et un modèle peut appartenir à plusieurs familles)
Mon schéma est le suivant : family <---> family_model <---> model
Par exemple, j'ai une famille f1 qui contient les modèles m1, m2 et m3 et une famille f2 qui contient m1 et m5 (m1 appartient donc aux deux familles).
Mon problème apparait lorsque je supprime la famille f1. J'aimerais qu'il supprime f1 de la table family, les relations f1-m1, f1-m2 et f1-m3 de la table de correspondance et les modèles m2 et m3 mais pas m1 de la table model!! Pour l'instant je n'obtiens pas le comportment souhaité.
voilà le mapping pour la family :
Code:
<class name="Family" table="family">
<id name="uid">
<column name="fam_kuid" />
<generator class="sequence">
<param name="sequence">seq_family</param>
</generator>
</id>
<property name="name" column="fam_name" unique="true"/>
<set name="models" table="family_model" cascade="all">
<key column="fam_kuid"/>
<many-to-many column="mod_kuid" class="Model"/>
</set>
</class>
et pour le model :
Code:
<class name="Model" table="model">
<id name="uid">
<column name="mod_kuid" />
<generator class="sequence">
<param name="sequence">seq_model</param>
</generator>
</id>
<property name="name" column="mod_name" />
<set name="families" table="family_model" inverse="true" >
<key column="mod_kuid"/>
<many-to-many column="fam_kuid" class="Family"/>
</set>
</class>
J'ai déjà essayé différents cascade (all, delete-orphan, ....) sans aucun résultat. Je cherche donc un mapping qui me permettrait lors de la suppression d'une famille, de suppirmer seulement les modèles orphelins (ceux qui ne sont plus référencés dans la table de correspondance family_model)
merci pour votre réponse