У меня есть такой запрос JPA.
PersonRepository.java
public Optional<List<PersonEntity>> findByStatus(int status);
PersonService.java
System.out.println(“Optional value is ”+findByStatus(1));
Выход составляет Optional value is Optional.empty
Теперь я изменил свой запрос
PersonRepository.java
public List<PersonEntity> findByStatus(int status);
PersonService.java
Optional<List<PersonEntity>> optional = Optional.of(findByStatus(1));
System.out.println("Optional value is "+optional);
Выход Optional value is Optional[[]]
В моей базе данных нет значения для статуса 1. Я хочу, чтобы мой вывод был Optional[[]]
для 1-го запроса. Как мне этого добиться?
Теперь я хочу добиться этого, потому что всякий раз, когда optional.get()
выбрасывает NoSuchElementException
, я буду обрабатывать его с помощью моего контроллера исключений и выставлять его как 404 для уровня REST. Но когда выбирается List<Object>
, ответом является только пустой список, но optional.get()
все равно выдает NoSuchElementException
. Я хочу избежать этого. Короче говоря, необязательная выборка Single Entity из репозитория выдает NoSuchElementException
, если не найдено никакого идеального значения. Но для необязательного извлечения списка сущностей, который является пустым, он должен быть возвращен как пустой и не выбрасывать NoSuchElementException
, поскольку это не ошибка 404. Это просто означает, что в настоящее время список пуст.