Pracuję nad dziwnym problemem, robiłem testy integracyjne, dzwoniąc do kontrolera, aby uzyskać obiekt z bazy danych, która nie istnieje.Dlaczego getOne (...) w repozytorium danych sprężynowych nie generuje wyjątku EntityNotFoundException?
public Optional<T> get(Long id) {
try {
return Optional.ofNullable(repository.getOne(id));
} catch(EntityNotFoundException e) {
return Optional.empty();
}
}
Kiedy getOne(…)
nie jest w stanie znaleźć coś, spodziewałem się EntityNotFoundException
ale właściwie nic. Jeśli sprawdzam mój wynik, widzę, że mam pusty obiekt z łącznikiem do niego obsługującym "wyrzucił EntityNotFoundException
", ale nie wchodzimy w połówkę i zwracam opcjonalne tego dziwnego obiektu.
Nie mogę zrozumieć tego zachowania.
Dlaczego oczekujesz wyrzucenia? Jawadoc nie mówi o wyjątku. – Jens
To jest klasyczne zachowanie JPA podczas wywoływania getOne() na nieistniejących danych. – Seb
Co więcej widzę, że ten wyjątek jest rzucany, ale jakoś poradzi sobie z danymi z wiosny? – Seb