#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());
}
}