Entfernen von Entitäten mit ManyToMany-Beziehung in JPA (und entsprechenden Join-Tabellenzeilen)

Angenommen, ich habe zwei Entitäten: Group und User. 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).

Problem ist, dass, wenn ich EntityManager.remove () auf einer Gruppe, JPA-Anbieter (in meinem Fall Ruhezustand) aufrufenentfernt keine Zeilen aus der Join-Tabelle und der Löschvorgang schlägt aufgrund von Fremdschlüsseleinschränkungen fehl. Das Aufrufen von remove () für User 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. Aber es erscheint mir lächerlich, update () für jeden Benutzer aus der Gruppe aufzurufen, nur um diese Gruppe löschen zu können.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage