Исключение при инициализации ApplicationContext HibernateException: Ошибка применения реляционных ограничений BeanValidation
Я создал ранее вопрос, где у меня проблема с бритьем, это может быть временно:
Добавление: hibernate.properties: javax.persistence.validation.mode=none
Я не могу понять точную причину, почему это происходит временно, я могу исправить с помощью: Добавление: hibernate.properties: javax.persistence.validation.mode=none
свойства. но это не может быть окончательным вариантом, потому что приложение должно получить валидный компонент.
Можете ли вы помочь мне понять, почему он дает эту ошибку ранее, этот проект работал нормально:
Если я не ставлю 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
2 ответа
В моем приложении мы используем hibernate 4 и после добавления hibernate-validator-4.1.0.Final.jar в classpath я не получаю это исключение, даже если у меня нет этих свойств в hibernate.properties: javax.persistence.validation.mode=none
Я могу решить эту проблему, добавив hibernate-validator-4.1.0.Final.jar в classpath приложения.
Я не совсем уверен, что полностью понимаю ваш вопрос, но если проблема в том, что вы получаете указанную выше трассировку стека при загрузке приложения, и она исчезает при установке javax.persistence.validation.mode=none
тогда ответ следующий.
Установка режима проверки указывает ORM или, более конкретно, BeanValidationIntegrator, чтобы вообще не включать проверку бинов. Это для спецификации JPA, где указано поведение между JPA и проверкой бина.
В любом другом режиме BeanValidationIntegrator
попытается включить проверку бинов. Проверяет, javax.validation.Validation
находится на пути к классам, принимая это как ключ к начальной загрузке Bean Validation. Однако также необходимо, чтобы была доступна реализация Bean Validation, например Hibernate Validator.
Ваша трассировка стека подразумевает, что у вас есть API Bean Validation на пути к классам, но нет провайдера Bean Validation (реализация).
Как выглядят ваши зависимости?