JPA Cascade Удалить строку JoinTable

У меня следующий класс:

public String sport;
public String date;
public String time;

@ManyToOne
public Location location;
public int min, max;
// 0 - public, 1 - invite only
public int scope;

@ManyToOne
public User creator;

@ElementCollection
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "games_attendees")
public List<User> attendees;

@ElementCollection
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "games_subs")
public List<User> subs;

@ElementCollection
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "games_invitees")
public List<User> invitees;

У меня нет реляционных сопоставлений в User, поскольку я не думаю, что мне нужно, чтобы это было двунаправленным.

Всякий раз, когда я пытаюсь удалить экземпляр игры, я получаю такую ​​ошибку:

org.hibernate.exception.ConstraintViolationException: could not execute update query
Caused by: org.postgresql.util.PSQLException: ERROR: update or delete on table "games" violates foreign key constraint "fkc80e3afb4429c99e" on table "games_attendees"
Detail: Key (id)=(3) is still referenced from table "games_attendees".

Я пробовал всевозможные комбинации LAZY / EAGER и различных типов каскадирования и не могу понять этого. Здесь есть еще несколько сообщений, но я не хочу, чтобы пользователь удалялся, а только строку из таблицы games_attendees.

* Обновление: * После некоторого устранения неполадок я решил попробовать выполнить собственный запрос перед оператором удаления, который просто удаляет все строки из таблицы games_attendees (таблица соединения), где совпадают game_ids. Это дает желаемый результат, но, похоже, это способ борьбы с JPA. Есть ли способ лучше?


person eliot    schedule 05.07.2013    source источник
comment
вы уже пробовали CascadeType.REFRESH?   -  person Angga    schedule 05.07.2013
comment
Попробовать удаление сирот? Выстрел в темноте, я еще раз подумаю и вернусь к тебе   -  person jacobhyphenated    schedule 05.07.2013
comment
вот полезная ссылка stackoverflow.com / questions / 306144 /   -  person Ye Wint    schedule 19.09.2014