当前位置: 首页 > 知识库问答 >
问题:

由于Bean验证API导致启动Hibernate验证器时出现问题

司寇正志
2023-03-14

我试图在我的项目中使用Hibernate验证器,但它不起作用。在以下行:

SessionFactory sessions = config.buildSessionFactory(builder.build());

我得到以下例外情况:

org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
    at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:154)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:311)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857)
    at net.myProject.server.util.HibernateUtil.<clinit>(HibernateUtil.java:32)
    ... 36 more
Caused by: java.lang.NoSuchMethodError: javax.validation.spi.ConfigurationState.getParameterNameProvider()Ljavax/validation/ParameterNameProvider;
    at org.hibernate.validator.internal.engine.ValidatorFactoryImpl.<init>(ValidatorFactoryImpl.java:119)
    at org.hibernate.validator.HibernateValidator.buildValidatorFactory(HibernateValidator.java:45)
    at org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory(ConfigurationImpl.java:217)
    at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111)

我发现这个问题似乎与我的问题很相似。他将他的解决方案描述为

我想我的问题也是一样的。在http://hibernate.org/validator/documentation/getting-start/it上说:

这会传递地引入对Bean验证API的依赖关系(javax.Validation:validation-api:1.1.0.final)

这一定是导致这个问题的原因,因为恢复到旧版本(4.3.1.final)可以解决这个问题。有没有办法强制Hibernate不拉入Bean验证API?

编辑:我试图排除javax-validation API:

    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>5.0.3.Final</version>
      <exclusions>
          <exclusion>
              <groupId>javax.validation</groupId>
              <artifactId>validation-api</artifactId>
          </exclusion>
      </exclusions>
  </dependency>

但似乎并没有什么效果。

共有1个答案

申屠晟
2023-03-14

尝试将此依赖项添加到pom.xml中

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.0.0.GA</version>
</dependency>

如果不是,请考虑使用Hibernate-Validator4.2.0.final,我的配置中有它,并且它运行良好。

 类似资料:
  • 问题内容: 我正在尝试在我的项目中使用Hibernate Validator,但无法正常工作。在下一行: 我得到以下异常: 我发现这个问题似乎与我的问题非常相似。他将自己的解决方案描述为 我在类路径中还有另一个bean验证程序jar。但是不是来自Maven,所以我没有意识到。删除即可解决问题。 我认为我的问题是一样的。在http://hibernate.org/validator/document

  • 环境 Glassfish 3.1.2内置Hibernate-Validator 4.2。

  • 首先,我是Vaadin7的新手。当我发现BeanFieldGroup.class时,我正在尝试一些vaadin演示。正如我所看到的,这个类将一个字段绑定到一个bean属性。在bean中,使用验证约束注释对属性进行注释(JSR303)。在本例中,我的pom.xml包含hibernate验证器依赖项: 我创建了validationmessage.properties文件,并在其中放了一些消息(带有匈牙

  • 我需要应用一个双值验证,这需要与圆周率匹配。我正在考虑使用@pattern(regex=“3.14159265359”)。这是使用Hibernate验证约束应用这样一个约束的最佳方式吗?谢谢

  • 但是,当我执行以下测试时,不会引发验证异常: 当保存一个已经持久化的对象时,我如何使验证器触发器?最好是通过Java配置。 我的验证依赖项:

  • 我知道这在这个论坛上不是新问题,但我很困惑我该怎么做。 问题:我正在用spring mvc+Hibernate开发一个应用程序。对于服务器端验证,我在controller中使用@valid注释,在bean中使用@null和@notnull注释。 例如: 这个验证很好地进行,数据也保存在DB中。 但我想验证唯一约束,引用完整性和其他约束使用注释没有任何验证器类。 有可能吗?如果没有,那么什么是最好和