Jak usunąć obiekt za pomocą relacji ManyToMany w JPA (i odpowiednich wierszach tabeli łączenia)?

Powiedzmy, że mam dwie jednostki: Grupę i Użytkownika. Każdy użytkownik może być członkiem wielu grup, a każda grupa może mieć wielu użytkowników.

@Entity
public class User {
    @ManyToMany
    Set<Group> groups;
    //...
}

@Entity
public class Group {
    @ManyToMany(mappedBy="groups")
    Set<User> users;
    //...
}

Teraz chcę usunąć grupę (powiedzmy, że ma wielu członków).

Problem polega na tym, że gdy wywołam EntityManager.remove () w niektórych grupach, dostawca JPA (w moim przypadku Hibernate)nie usuwa wierszy z tabeli łączenia operacja usuwania nie powiedzie się z powodu ograniczeń klucza obcego. Wywołanie metody remove () na użytkowniku działa poprawnie (sądzę, że ma to coś wspólnego z posiadaniem strony relacji).

Jak mogę w tym przypadku usunąć grupę?

Jedynym sposobem, w jaki mogłem wymyślić, jest załadowanie wszystkich użytkowników w grupie, a następnie dla każdego użytkownika usunięcie bieżącej grupy z jego grup i zaktualizowanie użytkownika. Ale wydaje mi się absurdalne wywoływanie update () na każdym użytkowniku z grupy tylko po to, aby móc usunąć tę grupę.

questionAnswers(8)

yourAnswerToTheQuestion