Работа над вызовом API, который изменяет некоторые данные в БД. Я пытаюсь предоставить значимое сообщение от API в случае возникновения исключения в JPA Layer. При любом сбое запуска SQL-запроса я получаю исключение DataIntegrityViolationException от JPA, которое не содержит точной причины сбоя. Поэтому я извлекаю из него исключение SQLException, а затем отвечаю сообщением об ошибке.
private String getSQLExceptionMessage(DataIntegrityViolationException e) {
Throwable nextException = e.getCause();
while (!nextException.getClass().equals(SQLException.class) && nextException.getCause() != null
&& !nextException.getClass().equals(nextException.getCause().getClass())) {
nextException = nextException.getCause();
}
return nextException.getMessage();
}
Есть ли лучший способ сделать это?