В настоящее время у меня есть отношение «многие ко многим» между событиями и пользователями.Автоматически сгенерированная таблица в моей БД, называемая event_registrations, отслеживает отношения и какие пользователи переходят к какому событию на основе их идентификаторов.
Я хочу создать метод контроллера, который принимает идентификатор события вместе ссписок идентификаторов пользователей, чтобы указанные пользователи были удалены из данного события.
Вот мои классы моделей:
@Entity
public class Event {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToMany(mappedBy = "eventRegistrations")
private List<User> userList;
public Event() { this.userList = new ArrayList<>(); }
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List<User> getUserList() {
return userList;
}
public void registerUser(User user){
this.userList.add(user);
}
public void removeUserRegistration(long userId){
this.userList.removeIf(user -> user.getId() == userId);
}
}
@Entity
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
@ManyToMany
@JsonIgnore
@JoinTable(
name = "event_registrations",
joinColumns = @JoinColumn(name="user_id", referencedColumnName =
"id"),
inverseJoinColumns = @JoinColumn(name = "event_id",
referencedColumnName = "id"))
private List<Event> eventRegistrations;
public Integer getId() {
return id;
}
public List<Event> getEventRegistrations() {
return eventRegistrations;
}
public void setEventRegistrations(List<Event> eventRegistrations) {
this.eventRegistrations = eventRegistrations;
}
}
Что я пробовал до сих пор в EventController:
@DeleteMapping(value = "/{id}/registrations", consumes =
{"application/json"})
public ResponseEntity deleteEventRegistrations(@RequestBody ArrayList<Long>
data, @PathVariable("id") long id){
try {
Event event = eventService.getEventById(id);
data.forEach(userId -> event.removeUserRegistration(userId));
return ResponseEntity.ok().build();
} catch(DataNotFoundException ex){
return ResponseEntity.notFound().build();
}
}
Это работает без проблем, но записи все еще существуют в таблице соединений впоследствии.При отладке этого пользователи удаляются из объекта Event, но изменения не сохраняются в базе данных.
Любая помощь приветствуется!