Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Java Базы данных (JDBC, JPA, Hibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2018, 21:31   #1
Ruslan17
Новичок
Джуниор
 
Регистрация: 06.04.2018
Сообщений: 1
По умолчанию Обработка исключений в Spring Boot/Data Jpa

Доброго времени суток. Пишу приложение 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.Json MappingException: 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.ExceptionHandlerExceptionRes olver : 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.Json MappingException: 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;
}


Но хотелось бы услышать другие мнения, так как ни тот ни тот вариант не совсем точно решают проблему. Заранее спасибо.
Ruslan17 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести проект на Spring Boot Abrikoss Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 0 20.03.2018 00:11
Нужна помощь!(Java, SpringMVC, Spring Data...) boomfuksicc Фриланс 1 22.06.2017 22:51
Обработка исключений с пoмощью структурированной обработки исключений Smart Visual C++ 3 01.11.2012 15:38
надпись Reboot and select proper boot device or insert boot media in selected boot device and press a key что значит Fat0307 Операционные системы общие вопросы 3 11.02.2012 22:48
Reboot and Select proper Boot device or Insert Boot Media in selected Boot device and press a key Walkman97 Операционные системы общие вопросы 4 04.06.2011 22:27