У меня есть много-много отношений между событиями и пользователями.Я сделал модель Event владельцем отношения, объявив mappedby () в модели User.Я могу удалить Users из переменной модели Event, и это прекрасно работает при отладке.
Событие:
@Entity
public class Event {
@ManyToMany(fetch = FetchType.LAZY,
cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
})
@JoinTable(
name = "event_registrations",
joinColumns = @JoinColumn(name="event_id", referencedColumnName =
"id"),
inverseJoinColumns = @JoinColumn(name = "user_id",
referencedColumnName = "id"))
private List<User> userList;
}
public void registerUser(User user){
this.userList.add(user);
}
public void removeUsers(ArrayList<Integer> userIds){
for(int userId: userIds){
this.userList.removeIf(user -> user.getId() == userId);
}
}
Пользователь:
@Entity
public class User {
@ManyToMany(fetch = FetchType.LAZY,
cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
},
mappedBy = "userList")
@JsonIgnore
private List<Event> eventRegistrations;
public void addEventRegistration(Event event) {
this.eventRegistrations.add(event);
}
public void removeEventRegistration(long eventId){
this.eventRegistrations.removeIf(event -> event.getId() == eventId);
}
}
Код, который выполняет удаление пользователей из события:
Event event = eventService.getEventById(id);
event.removeUsers(userIds);
Единственная проблема, с которой я столкнулся на данный момент, заключается в том, что эти изменения не сохраняются в базе данных, хотя переменная userList обновляется.
Любая помощь приветствуется!