Мои методы Delete () и DeleteById () в JPARepository не работают, я понятия не имею, почему.У меня есть 3 класса: Station, Line и StationLine.StationLine - это просто класс, который связывает первые два и имеет некоторые дополнительные атрибуты, которые я буду использовать позже в коде.
Строка имеет атрибут:
@OneToMany(fetch = FetchType.EAGER, mappedBy = "line", cascade = CascadeType.ALL)
private List<StationLine> stations;
Stationимеет атрибут:
@OneToMany(fetch = FetchType.LAZY, mappedBy="station", cascade=CascadeType.ALL)
private List<StationLine> stationLines;
StationLine имеет атрибуты:
@ManyToOne(optional=false)
private Station station;
@ManyToOne(optional=false)
private Line line;
Проблема в следующей части кода:
for(StationLine sl : stationsToRemove) {
StationLine found = stationLineRepository.findById(sl.getId()).orElse(null);
if(found == null) { throw new StationNotFoundException("Station " + sl.getStation().getName() + " not found!"); }
stationLineRepository.deleteById(found.getId());
found = stationLineRepository.findById(found.getId()).orElse(null);
if(found != null) {throw new StationNotFoundException("Station " + found.getId() + " " + found.getStation().getName() + " should be null but it is not!");}
}
Как видите, я добавил некоторый код до и после DeleteById (), который не нужен, но просто для проверки, все ли работает нормально.Перед удалением он всегда находит объект StationLine, который в порядке, но после этого он также находит его, что не хорошо, если он был удален ранее.
Та же ситуация для Delete ().
Если яправильно, с этими отношениями Station и Line должны быть полностью независимы от StationLine, поэтому их удаление не должно влиять на них.Я также пытался удалить его непосредственно в базе данных, и он работает без каких-либо ошибок, так что это должно означать, что отношения в порядке, верно?
Пожалуйста, помогите!