Как получить имя поля БД из ConstraintViolationException - Hibernamte - PullRequest
2 голосов
/ 06 февраля 2012

Как получить имя поля БД, вызывающее исключение ConstraintViolationException при вставке в базу данных в спящем режиме.

У меня есть таблица, как

mysql> desc Mytable;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | bigint(11)  | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | YES  | UNI | NULL    |                |
| city  | varchar(20) | YES  | UNI | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

И записи в таблице:

mysql> select * from Mytable;
+----+--------+-------+
| id | name   | city  |
+----+--------+-------+
|  1 | SATISH | BLORE |
+----+--------+-------+
1 row in set (0.00 sec)

Теперь я пытаюсь вставить

"RAMESH","BLORE" through hibernate.

Это бросает ConstraintViolationException due to "BLORE" (CITY) already Exist.

если я пытаюсь вставить.

"SATISH","MLORE" through hibernate

Это бросок ConstraintViolationException due to "SATISH" (NAME) already Exist.

Мой вопрос как получить fieldName, вызывающее исключение ConstraintViolationException через Hibernate.

1 Ответ

0 голосов
/ 06 февраля 2012

Поскольку могут быть другие ограничения, которые могут быть нарушены (например, комбинированные ключи), у вас есть только имя ограничения, которое в вашем случае может быть просто именем столбца (однако я не совсем уверен об этом). Вы можете получить имя нарушенного ограничения, вызвав getConstraintName() на ConstraintViolationException.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...