如何获得导致org.hibernate.exception.ConstraintViolationException
的字段名称?
检查唯一约束的唯一可靠方法是事务提交,因此即使我在抛出异常之前检查它也是如此。因此,我需要与用户字段进行沟通,从而导致存储问题
详细消息或多或少是技术性的,用户不能接受。它还取决于数据库驱动程序:(
IMO 字段名称就足够了,我可以从对象中获得有问题的价值。我还可以准备其他信息......但字段名称。
答案 0 :(得分:3)
你不能得到异常,而消息是这样的:
try{
t.commit();
}catch (ConstraintViolationException e) {
e.getCause().getMessage();//
}
会给你这样的结果[SQL0407] Null values not allowed in column or variable GROUP00002.
最后一个单词是你的列名,然后你可以翻译它以匹配你的字段(可能使用静态HashMap)。