Bonjour, je n'arrive pas à savoir si mon problème est résolvable par le mapping ou si je vais devoir écrire un trigger...

J'ai 4 tables :
- Tournee est composée de Trajets
- Trajet est un chemin entre deux site : siteDepart et siteArrivee qui sotn des clef etrangères sur la table Site
- Composer qui est en fait le résultat du lien entre Tournee et Trajet
- Site

Mon problème : Lorsque je supprime un site,
1. si le site n'appartient à aucun trajet, pas de soucis
2. si le site appartient à des trajets mais que ceux-ci n'appartiennent pas à des tournées, fonctionne en mettant un ON DELETE CASCADE sur les deux contraintes étrangères siteDepart et siteArrivee
3. si le site appartient à des trajets et qu'au moins un de ces trajets appartient à une tournée, je ne dois pas pouvoir supprimer ce site.... : hors cela est possible après l'ajout du on delete cascade mentionné ci-dessus.

voilou, donc j'ai pas mal lu la doc hibernate, mais je ne sais même pas si ce controle est faisable à partir du mapping ou si je dois me tourner vers un trigger ou autre...?

les bouts de fichiers de mapping :
tournee.hbm.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<list name="trajets" table="Composer" cascade="persist,merge,save-update">
   <key column="Tournee_Id" />
   <list-index column="Ordre" />        	
   <many-to-many column="Trajet_Id" class="org.geo.Trajet" />                
</list>
trajet.hbm.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<many-to-one name="depart" class="org.data.Site" column="SITE_DEPART"/>
<many-to-one name="arrivee" class="org.data.Site" column="SITE_ARRIVEE"/>
merci d'avance,

cordialement, tatia34