Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 06.04.2018, 22:31   #1
Ruslan17
Новичок
 
Регистрация: 06.04.2018
Сообщений: 1
Репутация: 10
По умолчанию Обработка исключений в 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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести проект на Spring Boot Abrikoss Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 0 20.03.2018 01:11
Нужна помощь!(Java, SpringMVC, Spring Data...) boomfuksicc Фриланс 1 22.06.2017 23: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


07:29.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru