Bonjour
J'ai trois tables membres_famille, adresses et membre_famille_adresse, que je souhaite faire corespondre avec 3 classes MembreFamille, MembreFamilleAdresse et Adresse.
Je souhaite également que la suppression d'un membre de famille supprime les associations qui y sont attachées mais aussi les adresses qui sont de l'autre côté.
C'est cette deuxième suppression que je n'arrive pas à faire réaliser automatiquement par Hibernate.
Actuellement j'ai écrit ceci dans MembreFamille.hbm.xml :
Code:
[...]
<set name="adresses" inverse="true" cascade="all-delete-orphan" lazy="true">
<key column="id_membre"/>
<one-to-many class="MembreFamilleAdresse"/>
</set>
[...]
et dans MembreFamilleAdresse.hbm.xml :
Code:
<hibernate-mapping package="mecs.donnees.coeur.famille">
<class
name="MembreFamilleAdresse"
table="membres_famille_adresse"
>
<meta attribute="sync-DAO">false</meta>
<composite-id name="id" class="MembreFamilleAdresseCP">
<key-many-to-one
name="adresse"
class="mecs.donnees.coeur.Adresse"
column="id_adresse"
/>
<key-many-to-one
name="membreFamille"
class="MembreFamille"
column="id_membre"
/>
</composite-id>
<many-to-one
name="typeAdresse"
column="id_type_adresse"
class="mecs.donnees.coeur.nomenclatures.EltNomencTypesAdrUsagers"
not-null="true"
>
</many-to-one>
</class>
</hibernate-mapping>
Apparemment il n'y a pas moyen d'écrire quelque chose comme cascade="all-delete-orphan" dans les éléments de la clé composée de l'association.
Quelle est la meilleure solution pour effectuer automatiquement les suppressions voulues ?
J'ai bien regardé avec les balises many-to-many, mais la doc n'est pas très claire là-dessus je trouve, en particulier quand on a une classe d'association. Il y a bien des exemples qui gèrent une table d'association, mais sans la faire correspondre à une classe (ou alors je n'ai pas compris comment).
Avez-vous un exemple qui fonctionne ?
Merci
Syll