ConstraintViolationException

ConstraintViolationException

在休眠状态下插入数据库时​​,如何获取引起ConstraintViolationException的DB字段的名称。

我有桌子喜欢

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

我的问题是
如何获取通过Hibernate导致异常ConstraintViolationException的fieldName。

最佳答案

由于可能会违反其他约束(例如,组合键),因此您只有违反的约束的名称,在您的情况下,它可能只是列名(但是,我对此不太确定) 。您可以通过在getConstraintName()上调用ConstraintViolationException来获取违反约束的名称。

关于java - 如何从ConstraintViolationException获取数据库字段名称-Hibernate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9160928/

10-08 20:55