Не удаляется элемент из базы данных
метод deleteSubject. Через Post запрос я получаю id элемента, ищу ещё через репозиторий и он его находит, по логам в if попадет. Пытался удалить этот элемент через delete / deleteById репозитория этого элемента, но он не удалятся.

Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
Попробуйте установить orphanRemoval = true для коллекции и добавьте метод(ы) для добавления элементов в коллекцию, которые устанавливали/разрывали бы связь между сущностями:
public class User implements UserDetails {
// ...
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Subject> subjectList = new ArrayList<>();
public void addSubject(Subject subject) {
this.subjectList.add(subject);
subject.setUser(this);
}
public void removeSubject(Subject subject) {
this.subjectList.remove(subject);
subject.setUser(null);
}
}
Исправленный сервисный метод -- в репозитории надо будет вызвать метод save/saveAndFlush:
public void deleteSubject(User user, Long subjectId) {
subjectRepository.findById(subjectId)
.ifPresentOrElse(subject -> {
user.removeSubject(subject);
userRepository.save(user);
}, () -> log.warn("Subject not found by id {}", subjectId));
}


