2010-01-12 4 views
4

Функция проверки подлинности Hibernate Validator, похоже, глючит (версия hibernate-validator-4.0.2.GA.jar). Возможно, я пропустил зависимость?Ошибка валидатора Hibernate - 4.0.2.GA

Часть моей трассировки стека:

java.lang.NoSuchMethodError: javax.persistence.Persistence.getPersistenceUtil()Ljavax/persistence/PersistenceUtil; 
     at org.hibernate.validator.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:33) 
     at org.hibernate.validator.engine.resolver.DefaultTraversableResolver.isReachable(DefaultTraversableResolver.java:112) 
     at org.hibernate.validator.engine.resolver.SingleThreadCachedTraversableResolver.isReachable(SingleThreadCachedTraversableResolver.java:47) 
     at org.hibernate.validator.engine.ValidatorImpl.isValidationRequired(ValidatorImpl.java:764) 
     at org.hibernate.validator.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:331) 
     at org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForRedefinedDefaultGroup(ValidatorImpl.java:278) 
     at org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:260) 
     at org.hibernate.validator.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:213) 
     at org.hibernate.validator.engine.ValidatorImpl.validate(ValidatorImpl.java:119) 
+0

ничего не может обойтись без конфигурации спящем ... возможно, вы свойство указано в которая не существует в классе. Пожалуйста, предоставьте дополнительную информацию, а также прочитайте, как здесь задавать вопросы. – Zoidberg

ответ

6

Я думаю, что это связано с тем, что он думает, что вы используете JPA2, но на самом деле вы используете JPA1. Удалите jpa-api-2.0.Beta-20090815.jar, который включен в дистрибутив Hibernate Validator, если он вам не нужен и повторите попытку.

+0

Мы нашли решение нашей исходной проблемы и прекратили поиск по этому вопросу.Итак, я до сих пор не знаю решения, но он должен иметь какое-то отношение к версиям. Спасибо за помощь в любом случае .. –

+0

Удивительный, только что нашел это в Google, удалив эту банку, исправил ее для меня. Ты легенда! – Rick

+0

Спасибо! Спас меня тоже! – Stevko

1

Я застрял в этом вопросе сегодня и сделал некоторые раскопки на нем. Я узнал ответ @ Javi полезный, но это не решило мою проблему. Еще десятки минут прибегая к помощи взял меня, чтобы выяснить следующее:

гибернации валидатор в версии 4.0.2.GA (и, вероятно, также и в других) определяет версию JPA по классу javax.persistence.PersistenceUtil, потому что этот класс НЕ содержится в JPA 1, но это в JPA 2. К сожалению, некоторые библиотеки реализуют этот класс, что делает Hibernate немного запутанным. В этом случае он пытается использовать JPA 2 также в среде Java 1.5, которая выдает исключение, упомянутое в вопросе.

Решение прост. Узнайте библиотеку, добавив этот класс и удалите ее. В моем случае это было ejb3-persistence-1.0.1.GA.jar. Об этой ошибке сообщалось давно, а в версии ejb3-persistence-1.0.2.GA.jar исправлено. Там это обновление решило проблему в моем случае.

0

Попробуйте добавить ejb3-сохраняемости 1.0.2GA к вашему классу путь/Maven ПОМ:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>ejb3-persistence</artifactId> 
    <version>1.0.2.GA</version>  
</dependency> 

Существует хорошее объяснение здесь: dependency-hell-or-including-jsr303

2

Это, кажется, ошибка, которая была исправлена ​​в версия 4.2.0.Beta1 валидатора Hibernate в соответствии с этим Jira: https://hibernate.onjira.com/browse/HV-374

Трассировка стека очень запутанна, поскольку предполагает, что используется Java 5, но я был уверен, что я запускаю Java 6.

У меня также не было возможности обновить валидатор, и я уже запускал ejb3-persistence-1.0.2.GA.jar, который является предлагаемым решением @Gaim, поэтому мне нужно было создать собственный CustomTraversableResolver, который заставляет JPA1 , Подробная информация о том, как это сделать, доступна здесь: http://soadev.blogspot.se/2010/02/jsr-303-bean-validation-error.html

0

Попробуйте перейти на hibernate-validator 4.2 + версию. У меня была такая же проблема с спящем-валидатор 4.1.0, но когда я повышен до V 4.2.0 проблема ушла

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator-annotation-processor</artifactId> 
     <version>4.2.0.Final</version> 
    </dependency> 
Смежные вопросы