【问题标题】:Exception in initializing ApplicationContext HibernateException: Error applying BeanValidation relational constraints初始化 ApplicationContext HibernateException 时出现异常:应用 BeanValidation 关系约束时出错
【发布时间】:2015-11-18 13:12:53
【问题描述】:

我之前创建了 Question 我有剃须问题的地方,可以暂时通过:

添加:hibernate.properties:javax.persistence.validation.mode=none

我无法理解为什么它暂时出现的确切原因,我可以通过以下方式修复:添加:hibernate.properties:javax.persistence.validation.mode=none 特性。但它不能是最终选择,因为应用程序需要获取验证 bean。

你能帮我理解为什么它在早些时候这个项目运行良好:

如果我没有将javax.persistence.validation.mode=none 属性放在hibernate.properties 中,我会遇到同样的错误。

请帮助我理解并解决这个问题。

我的完整堆栈跟踪如下:

-  2015-11-13 03:58:51,217 [main] INFO  (support.context.ApplicationContext)   Added 534 mappings (249 configured for L2 cache)
 -  2015-11-13 03:58:51,227 [main] INFO  (support.context.ApplicationContext) Done building hibernate configuration, time 3,201.301 ms
 -  2015-11-13 03:58:51,227 [main] INFO  (support.context.ApplicationContext) Building hibernate session factory
 -  2015-11-13 03:58:51,965 [main] INFO  (connections.internal.ConnectionProviderInitiator) HHH000130: Instantiating explicit connection provider: com.hotwg.shared.common.UCPConnectionProvider
 -  2015-11-13 03:58:52,321 [main] INFO  (hibernate.dialect.Dialect) HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect
 -  2015-11-13 03:58:52,525 [main] FATAL (support.context.ApplicationContext) Error initializing ApplicationContext
org.hibernate.HibernateException: Error applying BeanValidation relational constraints
        at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:219)
        at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:126)
        at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:302)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1740)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1778)
        at com.hotwg.base.support.context.ApplicationContext.buildSessionFactory(ApplicationContext.java:197)
        at com.hotwg.base.support.context.ContextFactory.buildContext(ContextFactory.java:131)
        at com.hotwg.base.support.context.ContextFactory.buildContext(ContextFactory.java:104)
        at com.hotwg.base.support.context.ContextFactory.createDefaultContext(ContextFactory.java:607)
        at com.hotwg.base.api.batch.StandaloneExecuter.setupContext(StandaloneExecuter.java:334)
        at com.hotwg.base.api.batch.StandaloneExecuter.run(StandaloneExecuter.java:135)
        at com.hotwg.base.api.batch.StandaloneExecuter.main(StandaloneExecuter.java:433)
        at com.hotwg.base.api.batch.AbstractStandaloneRunner.invokeStandaloneExecuter(AbstractStandaloneRunner.java:546)
        at com.hotwg.base.api.batch.ThreadPoolWorker.invokeStandaloneExecuter(ThreadPoolWorker.java:122)
        at com.hotwg.base.api.batch.AbstractStandaloneRunner.run(AbstractStandaloneRunner.java:179)
        at com.hotwg.base.api.batch.ThreadPoolWorker.run(ThreadPoolWorker.java:66)
        at com.hotwg.base.api.batch.ThreadPoolWorker.main(ThreadPoolWorker.java:56)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:208)
        ... 16 more
Caused by: org.hibernate.HibernateException: Unable to build the default ValidatorFactory
        at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:524)
        at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.java:119)
        ... 21 more
Caused by: javax.validation.ValidationException: Unable to find a default provider
        at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:264)
        at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111)
        at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:521)
        ... 22 more
 -  2015-11-13 03:58:52,529 [main] ERROR (api.batch.StandaloneExecuter) error initializing test context
 -  2015-11-13 03:58:52,529 [main] ERROR (api.batch.StandaloneExecuter) Error encountered in standalone executer
com.hotwg.shared.common.LoggedException:
The following stacked messages were reported as the LoggedException was rethrown:
com.hotwg.base.support.context.ContextFactory.createDefaultContext(ContextFactory.java:607): error initializing test context

The root LoggedException was: Error initializing ApplicationContext
        at com.hotwg.shared.common.LoggedException.wrap(LoggedException.java:199)
        at com.hotwg.base.support.context.ApplicationContext.throwUnableToInitializeApplicationContext(ApplicationContext.java:300)
        at com.hotwg.base.support.context.ApplicationContext.buildSessionFactory(ApplicationContext.java:202)
        at com.hotwg.base.support.context.ContextFactory.buildContext(ContextFactory.java:131)
        at com.hotwg.base.support.context.ContextFactory.buildContext(ContextFactory.java:104)
        at com.hotwg.base.support.context.ContextFactory.createDefaultContext(ContextFactory.java:607)
        at com.hotwg.base.api.batch.StandaloneExecuter.setupContext(StandaloneExecuter.java:334)
        at com.hotwg.base.api.batch.StandaloneExecuter.run(StandaloneExecuter.java:135)
        at com.hotwg.base.api.batch.StandaloneExecuter.main(StandaloneExecuter.java:433)
        at com.hotwg.base.api.batch.AbstractStandaloneRunner.invokeStandaloneExecuter(AbstractStandaloneRunner.java:546)
        at com.hotwg.base.api.batch.ThreadPoolWorker.invokeStandaloneExecuter(ThreadPoolWorker.java:122)
        at com.hotwg.base.api.batch.AbstractStandaloneRunner.run(AbstractStandaloneRunner.java:179)
        at com.hotwg.base.api.batch.ThreadPoolWorker.run(ThreadPoolWorker.java:66)
        at com.hotwg.base.api.batch.ThreadPoolWorker.main(ThreadPoolWorker.java:56)
Caused by: org.hibernate.HibernateException: Error applying BeanValidation relational constraints
        at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:219)
        at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:126)
        at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:302)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1740)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1778)
        at com.hotwg.base.support.context.ApplicationContext.buildSessionFactory(ApplicationContext.java:197)
        ... 11 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:208)
        ... 16 more
Caused by: org.hibernate.HibernateException: Unable to build the default ValidatorFactory
        at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:524)
        at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.java:119)
        ... 21 more
Caused by: javax.validation.ValidationException: Unable to find a default provider
        at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:264)
        at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111)
        at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:521)
        ... 22 more
Exception in thread "main" com.hotwg.shared.common.LoggedException:
The following stacked messages were reported as the LoggedException was rethrown:
com.hotwg.base.support.context.ContextFactory.createDefaultContext(ContextFactory.java:607): error initializing test context

The root LoggedException was: Error initializing ApplicationContext
        at com.hotwg.shared.common.LoggedException.wrap(LoggedException.java:199)
        at com.hotwg.base.support.context.ApplicationContext.throwUnableToInitializeApplicationContext(ApplicationContext.java:300)
        at com.hotwg.base.support.context.ApplicationContext.buildSessionFactory(ApplicationContext.java:202)
        at com.hotwg.base.support.context.ContextFactory.buildContext(ContextFactory.java:131)
        at com.hotwg.base.support.context.ContextFactory.buildContext(ContextFactory.java:104)
        at com.hotwg.base.support.context.ContextFactory.createDefaultContext(ContextFactory.java:607)
        at com.hotwg.base.api.batch.StandaloneExecuter.setupContext(StandaloneExecuter.java:334)
        at com.hotwg.base.api.batch.StandaloneExecuter.run(StandaloneExecuter.java:135)
        at com.hotwg.base.api.batch.StandaloneExecuter.main(StandaloneExecuter.java:433)
        at com.hotwg.base.api.batch.AbstractStandaloneRunner.invokeStandaloneExecuter(AbstractStandaloneRunner.java:546)
        at com.hotwg.base.api.batch.ThreadPoolWorker.invokeStandaloneExecuter(ThreadPoolWorker.java:122)
        at com.hotwg.base.api.batch.AbstractStandaloneRunner.run(AbstractStandaloneRunner.java:179)
        at com.hotwg.base.api.batch.ThreadPoolWorker.run(ThreadPoolWorker.java:66)
        at com.hotwg.base.api.batch.ThreadPoolWorker.main(ThreadPoolWorker.java:56)
Caused by: org.hibernate.HibernateException: Error applying BeanValidation relational constraints
        at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:219)
        at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:126)
        at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:302)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1740)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1778)
        at com.hotwg.base.support.context.ApplicationContext.buildSessionFactory(ApplicationContext.java:197)
        ... 11 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:208)
        ... 16 more
Caused by: org.hibernate.HibernateException: Unable to build the default ValidatorFactory
        at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:524)
        at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.java:119)
        ... 21 more
Caused by: javax.validation.ValidationException: Unable to find a default provider
        at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:264)
        at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111)
        at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:521)
        ... 22 more

【问题讨论】:

    标签: java spring hibernate bean-validation spring-bean


    【解决方案1】:

    我不太确定我是否完全理解您的问题,但如果问题是您在引导应用程序时获得了上述堆栈跟踪,而在您设置 javax.persistence.validation.mode=none 时它消失了,那么答案如下。

    设置验证模式告诉 ORM,或者更具体地说是 BeanValidationIntegrator 根本不启用 Bean 验证。这是每个 JPA 规范,其中指定了 JPA 和 Bean 验证之间的行为。

    在任何其他模式下,BeanValidationIntegrator 将尝试启用 Bean 验证。它检查javax.validation.Validation 是否在类路径中,以此作为引导 Bean 验证的关键。但是,它还要求有可用的 Bean Validation 实现,例如 Hibernate Validator。

    您的堆栈跟踪表明您在类路径上有 Bean Validation API,但没有 Bean Validation Provider(实现)。

    您的依赖项是什么样的?

    【讨论】:

    • 我很难看到这里的连接。 SSL 是关于加密 TCP/IP 流量的。与 Bean Validation 没有任何联系。这里一定有更多的事情发生。我假设您的整体项目设置存在问题,但您既没有提供有关使用 Bean Validation 的上下文的任何详细信息,也没有提供有关正在运行的框架版本的任何详细信息。
    • 回答您的问题-“您的依赖项是什么样的?”我的类路径中有完整的 hibernet4.1 jar 集,并且依赖于 Weblogic 相关的 jar。
    【解决方案2】:

    在我的应用程序中,我们使用的是休眠 4,在将 hibernate-validator-4.1.0.Final.jar 添加到类路径后,即使我在休眠中没有此属性,我也没有收到此异常.properties:javax.persistence.validation.mode=none

    我可以通过在应用程序类路径中添加 hibernate-validator-4.1.0.Final.jar 来解决此问题。

    【讨论】:

    • wlfullclient.jar 将包含 javax.validation.Validation 类,并且这是隐式的。它触发 Bean Validation 类来引导验证。因此,现在添加 hibernate-validation-XX.jar 修复它。wlfullclient.jar。如果我们不在 wlfullclient.jar 中包含 javax.validaton.Validation 类。它会解决的。我已经检查了我的类路径 wlfullclient.jar 也存在。
    猜你喜欢
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多