Disons que j'ai deux entités: le Groupe et l'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 beaucoup de membres).
Le problème est que lorsque j'appelle l'EntityManager.remove() sur certains groupes, fournisseur JPA (dans mon cas, Hibernate) ne pas supprimer des lignes de la table de jointure et de supprimer l'opération échoue en raison de contraintes de clé étrangère. Appel remove() de l'Utilisateur fonctionne très bien (je suppose que cela a quelque chose à voir avec la possession côté de la relation).
Alors, comment puis-je supprimer un groupe dans ce cas?
Seule façon que je pouvais venir avec charge tous les utilisateurs du groupe, puis pour chaque utilisateur supprimer un groupe actuel de ses groupes et de mise à jour de l'utilisateur. Mais il semble ridicule de m'appeler update() sur chaque utilisateur du groupe juste pour être en mesure de supprimer ce groupe.