如何从JPA中的唯一约束异常中获取字段名称

时间:2016-03-07 18:18:56

标签: java mysql hibernate jpa

我理解如果我尝试使用JPA插入记录并且如果它违反了唯一约束,则会抛出一个包含MySQLIntegrityConstraintViolationException的异常。

我想向用户显示用户友好的消息。所以我想得到发生违规的字段名称。我可以使用cause来获取消息,该消息为密钥'DOCUMENT_NUMBER'提供重复条目'1'的消息。

但我觉得依赖于消息(e.getCause()。getCause()。getMessage())不是一个好主意。

该实体可能包含其他几个独特的约束,例如emailid,增值税号等。

所以我想获得发生约束违规的字段名称。

有人可以帮助如何获取字段名称吗?

提前致谢, Kitty的

1 个答案:

答案 0 :(得分:0)

你可以尝试下面的代码

try{

     //here your code
     ...
}catch (ConstraintViolationException e) {
        for(ConstraintViolation violation : e.getConstraintViolations()) {
            System.out.println(violation.getMessage());
        }
    }

另请参阅ConstraintViolationException的详细说明,请参阅Java doc