Angenommen, ich habe zwei Entitäten: Gruppe und Benutzer. Jeder Benutzer kann Mitglied vieler Gruppen sein und jede Gruppe kann viele Benutzer haben.
@Entity
public class User {
@ManyToMany
Set<Group> groups;
//...
}
@Entity
public class Group {
@ManyToMany(mappedBy="groups")
Set<User> users;
//...
}
Jetzt möchte ich eine Gruppe entfernen (sagen wir, sie hat viele Mitglieder).
Das Problem ist, dass der JPA-Anbieter (in meinem Fall Hibernate) beim Aufrufen von EntityManager.remove () in einer Gruppe keine Zeilen aus der Join-Tabelle entfernt und der Löschvorgang aufgrund von Fremdschlüsseleinschränkungen fehlschlägt. Das Aufrufen von remove () für den Benutzer funktioniert einwandfrei (ich denke, dies hat etwas mit dem Besitz der Seite der Beziehung zu tun).
Wie kann ich in diesem Fall eine Gruppe entfernen?
Die einzige Möglichkeit, die ich finden könnte, besteht darin, alle Benutzer in der Gruppe zu laden und dann für jeden Benutzer die aktuelle Gruppe aus seinen Gruppen zu entfernen und den Benutzer zu aktualisieren. Es erscheint mir jedoch lächerlich, bei jedem Benutzer aus der Gruppe update () aufzurufen, um diese Gruppe löschen zu können.