Как определить режим гибернации для возврата ошибки sql

#java #sql #hibernate

#java #sql #режим гибернации

Вопрос:

Я пытаюсь понять, как можно получить сообщение об ошибке sql из базы данных во время неудачного запроса через режим гибернации.

в моей базе данных есть таблица, подобная этой:

  TABLE applications
 (
   id serial NOT NULL,
   name character varying(80) NOT NULL,
   CONSTRAINT applications_pkey PRIMARY KEY (id),
   CONSTRAINT applications_name_key UNIQUE (name)
 )
  

я пытаюсь два раза вставить в эту таблицу строку с одинаковым значением имени ячейки. Первый запрос уже выполнен, при втором запросе я получаю только сообщение от пойманного исключения:

  could not execute statement
  

этого слишком мало, это должно помочь мне найти, что не так? Я хочу получить информацию из базы данных примерно так

 SQL Error. Duplicate column 'name' values
  

Режим гибернации с помощью HibernateException просто покрывает ошибку истинной причины. Кто-нибудь знает, как избежать подобной ситуации?

Комментарии:

1. опубликуйте полную трассировку стека ошибок, она должна рассказать вам, в чем заключается основная проблема

2. в stacktrace нет информации

Ответ №1:

Сначала вам нужно получить исключение из режима гибернации, чем вы можете получить статус ошибки sql:

  catch (HibernateException ex) {

        Throwable cause = ex.getCause();
        if (cause instanceof SQLException) {
            System.out.println(cause.getMessage());
        }
 }