Disons que j'ai deux entités: Groupe et Utilisateur. Chaque utilisateur peut être membre de plusieurs groupes et chaque groupe peut avoir de nombreux utilisateurs.
@Entity
public class User {
@ManyToMany
Set<Group> groups;
//...
}
@Entity
public class Group {
@ManyToMany(mappedBy="groups")
Set<User> users;
//...
}
Maintenant, je veux supprimer un groupe (disons qu'il a de nombreux membres).
Le problème est que lorsque j'appelle EntityManager.remove () sur un groupe, le fournisseur JPA (dans mon cas Hibernate) ne supprime pas les lignes de la table de jointure et l'opération de suppression échoue en raison de contraintes de clé étrangère. L'appel de remove () sur User fonctionne bien (je suppose que cela a quelque chose à voir avec le côté propriétaire de la relation).
Alors, comment puis-je supprimer un groupe dans ce cas?
Le seul moyen que je pourrais trouver est de charger tous les utilisateurs du groupe, puis pour chaque utilisateur, supprimez le groupe actuel de ses groupes et mettez à jour l'utilisateur. Mais il me semble ridicule d'appeler update () sur chaque utilisateur du groupe juste pour pouvoir supprimer ce groupe.