Bonjour,
Je travaille sur une appli Web qui utilise Hibernate pour la gestion de la persistance.
Certains de mes objets contiennent des listes d'éléments que l'utilisateur peut manipuler dans l'interface graphique (ajout, modif, suppression).
Tout marche bien sauf pour la suppression d'un élément d'une liste.
Dans ce cas précis, Hibernate me met bien à jour l'objet principal mais ne supprime pas l'élément qui n'existe plus dans une de ses listes.
Alors j'ai lu quelque part qu'en plus du "cascade='all-delete-orphan'" il fallait mettre à null le père dans l'élément de la collection à supprimer.
Le problème c'est que quand je récupère mon objet du côté serveur, ben cet objet n'existe déjà plus, puisque supprimé du côté serveur.
Pour moi c'est un problème "basique" qui devrait être gérer par Hibernate, mais apparemment c'est pas aussi simple que ça.
Quelqu'un a une solution ?
Voici le mapping de la liste en question :
Et Voici le mapping de l'élément contenu dans la liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <bag name="documents" table="DOCUMENTATION" lazy="false" inverse="true" cascade="all-delete-orphan"> <key column="ID_PERE" foreign-key="ID"/> <one-to-many class="Document"/> </bag>
ps : l'association est bidirectionnelle, c'est peut-être ça qui bloque ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <class name="Document" table="DOCUMENTATION"> <id name="id" column="ID"> <generator class="sequence"> <param name="sequence">SEQ_DOCUMENTATION</param> </generator> </id> <property name="chemin" column="CHEMIN"/> <property name="commentaire" column="COM"/> <property name="extension" column="EXT"/> <property name="nom" column="FICHIER"/> <many-to-one name="pere" class="PERE" column="ID_PERE" lazy="false" cascade="all"/> </class>
Partager