Java 无法获取Spring';更新到Hibernate验证程序4后出现的DataIntegrityViolationException异常
我不明白为什么在从Hibernate Validator 3.X升级到4.X之后,我再也没有得到DataIntegrityViolationException 不知何故,Spring不再能够包装持久层异常 除了验证程序依赖项之外,没有任何更改,但是验证DataIntegrityViolationException是否在验证冲突的情况下抛出的测试不再通过。 现在我得到了一个javax.validation.ConstraintViolationException 一切都还在,当然包括 但是翻译不再发生了Java 无法获取Spring';更新到Hibernate验证程序4后出现的DataIntegrityViolationException异常,java,spring,bean-validation,Java,Spring,Bean Validation,我不明白为什么在从Hibernate Validator 3.X升级到4.X之后,我再也没有得到DataIntegrityViolationException 不知何故,Spring不再能够包装持久层异常 除了验证程序依赖项之外,没有任何更改,但是验证DataIntegrityViolationException是否在验证冲突的情况下抛出的测试不再通过。 现在我得到了一个javax.validation.ConstraintViolationException 一切都还在,当然包括 但是翻译不再
欢迎光临 根据JPA-2.0规范,如果类路径中存在JSR-303验证器实现(即Hibernate validator 4.x),则在持久化实体之前会自动触发JSR-303验证 因此,您的实体被Hibernate Validator拒绝,不会进入数据库,因此不会违反数据库完整性约束,也不会抛出
DataIntegrityViolationException
,而是获得JSR-303的ConstraintViolationException
您可以通过添加
<validation-mode>NONE</validation-mode>
无
对你的
persistence.xml
我很震惊,但你说得有点对
如果我关闭验证,我仍然会得到“验证”,而不是得到根本原因DataIntegrityViolationException
PropertyValueException,而是得到org.hibernate.exception.ConstraintViolationException
,甚至不是预期的javax.validation.ConstraintViolationException
因此,Hibernate Validator似乎启用了两种验证。您似乎指出,新Bean验证默认启用的是“pre-database”。
但不管怎样,无论是否有NONE
,我的日志总是显示查询。可能是因为Hibernate日志记录,他们无法进入数据库,但我有点不知道到底发生了什么
不使用NONE
的验证与使用的验证有什么区别。在AFAIK文件中找不到任何关于这方面的信息