在休眠状态下插入数据库时,如何获取引起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/