如何启用Spring验证

时间:2013-11-11 02:55:24

标签: spring validation bean-validation hibernate-validator

在我的类路径中放入hibernate-validator.jar和javax.validation-api.jar后,我的旧验证关闭, org.springframework.dao.DataIntegrityViolationException org取代。 hibernate.exception.ConstraintViolationException ,它包含来自表约束的SQL异常,这会导致很多问题。

它自动启用了JSR-303验证,因此它不再验证任何内容。

我必须把这两个罐子升级到能够将泽西升级到2.4,它依赖于这两个罐子。

将这些属性放入hibernate.properties文件没有帮助,hibernate只是忽略它们但是它在启动时加载了属性

从资源hibernate.properties加载属性:{hibernate.validator.apply_to_ddl = false,hibernate.validator.autoregister_listeners = false etc}

javax.persistence.validation.mode=none
hibernate.validator.autoregister_listeners=false
hibernate.validator.apply_to_ddl=false

我正在使用带有SessionFactory的Spring 3.2.4和来自hbm.xml文件的资源,其中包含约束,hibernate 3.6.9.final,hibernate-validator 5.0.final,javax.validator-api 1.1.0.Final < / p>

我只是无法弄清楚如何在我的类路径中启用hibernate.validator时启用弹簧验证,我们将非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以在javax.persistence.validation.mode(或使用JPA时none)中将hibernate.cfg.xml设置为persistence.xml来停用Bean验证。

出于兴趣,您似乎在模型上有约束注释(否则您不应该看到ConstrainViolationException,所以我想知道您为什么不想验证它们?

答案 1 :(得分:0)

将hibernate验证器添加到类路径会关闭hibernate核心验证,因此我必须添加此属性才能将其重新打开

<prop key="hibernate.check_nullability">true</prop>