如何在hibernate中插入数据库时获取导致ConstraintViolationException的DB字段的名称。
我有Table Like
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。
答案 0 :(得分:0)
由于可能存在其他可能违反的约束(例如组合键),您只有违反约束的名称,在您的情况下可能只是列名称(但是,我不完全确定)关于那个)。您可以通过getConstraintName()
上的ConstraintViolationException
来获取违规约束的名称。