JPA удаляет запросы во многих отношениях
У меня есть две сущности (человек и событие). Персона и Событие связаны в двух разных отношениях, а именно:
Человек:
...
@OneToMany(fetch = FetchType.EAGER,cascade=CascadeType.ALL,mappedBy="person")
//@JoinColumn(name="idEvent",referencedColumnName="idEvent",insertable=true,updatable=true)
private List<Event> event;
@ManyToMany(mappedBy="participants", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JsonIgnore
private List<Event> eventsPart;
...
Событие:
...
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="event_id")
private Person person;
@ManyToMany(fetch=FetchType.EAGER, cascade={
CascadeType.DETACH,
CascadeType.MERGE,
CascadeType.REFRESH,
CascadeType.PERSIST})
@JoinTable(
name="event_participants",
joinColumns=@JoinColumn(name="event_id", referencedColumnName="idEvent"),
inverseJoinColumns=@JoinColumn(name="person_id", referencedColumnName="idPerson"))
private List<Person> participants;
...
Я не уверен, что эти отношения верны. Идея состоит в том, что Person может создавать N событий (отношение OneToMany), а также может быть участником других событий, созданных другими людьми (отношение ManyToMany). Проблема в том, что когда владелец события "удаляет" событие, оно будет удалено только в том случае, если Персона отсутствует в списке участников. Он будет удален только в том случае, если список участников пуст. Если я попытаюсь использовать "CascadeType.REMOVE" в списке участников события, он, очевидно, удалит также все сущности "Персона" в списке (и это не то поведение, которое я ищу). Я хочу иметь возможность удалить событие в любом случае (но без удаления сущностей Person в списке). Например, если существует событие с N сущностями "Персона", которые участвуют в событии, и владелец удаляет событие, будет удалено только событие, а также сопоставления в таблицах соединения (но не сущности Персоны). Любая помощь приветствуется.