Скажімо, у мене є дві сутності: Група та Користувач. Кожен користувач може бути членом багатьох груп, і кожна група може мати багато користувачів.
@Entity
public class User {
@ManyToMany
Set<Group> groups;
//...
}
@Entity
public class Group {
@ManyToMany(mappedBy="groups")
Set<User> users;
//...
}
Тепер я хочу видалити групу (припустимо, у ній багато учасників).
Проблема полягає в тому, що коли я викликаю EntityManager.remove () у якійсь групі, постачальник JPA (у моєму випадку Hibernate) не видаляє рядки з таблиці об’єднань, а операція видалення не вдається через обмеження зовнішнього ключа. Виклик remove () для Користувача працює нормально (мабуть, це пов’язано з власницькою стороною відносин).
То як я можу видалити групу в цьому випадку?
Єдиний спосіб, який я міг би придумати, - це завантажити всіх користувачів у групі, а потім для кожного користувача видалити поточну групу зі своїх груп та оновити користувача. Але мені здається смішним викликати update () для кожного користувача з групи, лише щоб мати можливість видалити цю групу.