Bonjour à tous,
J'ai un petit souci pour la suppression en cascade de mes éléments.
Rien de bien compliqué pourtant... J'ai des utilisateurs qui ont des rôles :
Code:
<class name="SystemUser" table="system_user">
<id name="id" type="long">
<generator class="identity"/>
</id>
<property name="username"/>
<property name="phone"/>
...
<set name="roles" table="system_user_role" order-by="role_id asc" cascade="all-delete-orphan">
<key column="system_user_id"/>
<many-to-many column="role_id" class="Role"/>
</set>
</class>
<class name="Role" table="role">
<id name="id" type="long">
<generator class="identity"/>
</id>
<property name="rolename"/>
Je me retrouve donc avec les tables suivantes :
id | username
-----------------
1 | 2dc
2 | Tom
id | rolename
----------------
1 | administrator
sytem_user_id | role_id
----------------------------
1 | 1
2 | 1
Tout fonctionne très bien sauf lorsque je veux supprimer un rôle associé à un utilisateur.
Si je fais :
Code:
// Pour l'utilisateur 2dc
systemUser.getRoles().remove(role);
L'association est bien supprimée mais le problème est que le rôle est également supprimé de sa table. Je me retrouve donc avec l'utilisateur Tom restant, avec son association vers le role administrator mais ce dernier n'existe plus dans la table rôle.
Quelqu'un peut-il me dire où est mon erreur?
Merci d'avance pour vos éventuelles réponses![/code]