Исключения при использовании Spring Data Jpa

 
 
 
Сообщения:1
Доброго времени суток. Пишу приложение Spring Boot/ Sprind Data Jpa. Возникла проблема во время того как пытался обработать собственный экзепшн.
Если вызываю метод getOne(id) из репозитория(наследуюсь от JpaRepository) и пытаюсь обработать его своим экзепшном:
    @Override
    public Users getOne(Integer id) {
        Users user = repository.getOne(id);
        if (user == null) {
            throw new CustomException();
        }
        return repository.getOne(id);
    }

Данный код не срабатывает если я передаю ему не существующий в бд id и мой CustomException не пробрасывается, тк судя по всему спринг обрабатывает его раньше меня:
Could not write JSON: Unable to find application.model.Users with id 3; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Unable to find application.model.Users with id 3 (through reference chain: application.model.Users_$$_jvst260_0["name"])
2018-04-06 17:17:21.759 WARN 31468 --- [nio-7373-exec-1] .m.m.a.ExceptionHandlerExceptionResolver : Resolved exception caused by Handler execution: org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Unable to find application.model.Users with id 3; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Unable to find application.model.Users with id 3 (through reference chain: application.model.Users_$$_jvst260_0["name"])
(С try/catch тоже самое)
Решил это двумя способами:
1. С помощью ExceptionHandler и ControllerAdvice, передавая в хэндлер HttpMessageNotWritableException
2. Использовал Optional:
 @Override
    public Optional<Users> getOne(Integer id) {
        Optional<Users> user = repository.findById(id);
        if (!user.isPresent()) {
            throw new CustomException();
        }
        return user;
    }


Но хотелось бы услышать другие мнения, так как ни тот ни тот вариант не совсем точно решают проблему. Заранее спасибо.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет