我知道,如果我尝试使用JPA插入一个记录,如果它违反了唯一约束,它会抛出一个异常,其中包含cause MysqlintegrityConstraintViolationException(原因MysqlintegrityConstraintViolationException)。
我想向用户显示用户友好的消息。因此我想获得发生违规的字段名。我可以使用cause获得消息,它给消息提供类似于密钥'document_number'的重复条目'1'。
但是我觉得依赖message(e.getCrease().getCrease().getMessage())不是一个好主意。
该实体可能包含其他几个唯一的约束,如emailid、vat number等。
因此我希望获得发生约束冲突的字段名。
有谁能帮我找到这个字段的名字吗?
谢谢你,凯蒂
您可以尝试下面的代码
try{
//here your code
...
}catch (ConstraintViolationException e) {
for(ConstraintViolation violation : e.getConstraintViolations()) {
System.out.println(violation.getMessage());
}
}
关于ConstraintViolationException
的详细说明,请参阅Java文档。
问题内容: 当违反唯一约束时,将引发a。但是可能有多种原因抛出异常。我如何才能发现违反了唯一约束? 问题答案: 我如何才能发现违反了唯一约束? 异常是链接在一起的,您必须递归调用以获取提供程序特定的异常(并可能转到),以将其转换为应用程序可以很好地为用户处理的内容。下面将打印异常链: 对于异常处理和“翻译”,您可以执行类似于Spring的操作(请参阅各种类,例如,以获取想法)。 所有这些都不是很好
问题内容: 我正在JPA中对userid列强制执行唯一性约束检查,这是对user表中的所有记录强制执行的。 我的要求是,特定组织内的用户ID必须唯一,而不是在所有组织中都唯一。 如何执行此类检查? 问题答案: 您可以为唯一约束指定多个字段,请尝试: 通过这样做,您的约束条件将检查userid和Organizationid的组合是否唯一。 最好的祝福,费边
问题内容: 有没有一种方法可以使用JPA指定在不同的列集上应该有多个唯一约束? 我已经看到了特定于hibernate的注释,但是由于我们仍在确定hibernate和数据核之间的关系,因此我试图避免使用特定于供应商的解决方案。 问题答案: 所述的属性实际接受的这些阵列。您的示例只是具有单个元素的数组的简写。否则,它看起来像: 只要唯一性约束仅基于一个字段,就可以在该列上使用。
在Jpa/Hibernate中,是否有任何方法可以在转到oracle db之前捕获运行时代码中要捕获的唯一约束。 场景:执行JPA批插入(我们在批处理中有一对多的父子关系),一些子表有两组唯一的约束 问题:当其中一个子表上的约束失败异常来自oracle时,我们无法跟踪批处理中的哪个约束失败了,为了解决这个问题,我们希望在代码中捕获它之前。
问题内容: 我有两个表->变量(id,名称)和Variable_Entries(id,var_id,值)。 我希望每个变量都具有唯一的一组条目。如果我使值条目唯一,那么其他变量将无法具有相同的值,这是不正确的。 有什么办法可以使相同的var_id的value列唯一? 问题答案: 是的: 现在,您对var_id和value有了唯一的约束。换句话说,var_id和value的出现不能出现多次。
关于Oracle中对可为空的列进行唯一约束定义的可能解决方案,我想向你们请教/收集一些想法。 null 现在困难的部分来了。我决定,在这个表中,可以存储更多(独立)客户的数据。为此,我添加了名为customer_code的新列。这段代码实际上将表分割成不同的空格,而每个客户只能看到自己的数据。 为此,引入了oracle vpd(虚拟专用数据库)。 每个客户都使用自己的oracle用户 登录时,将加