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 :
trajet.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>
merci d'avance,
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"/>
cordialement, tatia34
Partager