Ошибка валидатора гибернации - 4.0.2.GA - PullRequest
4 голосов
/ 12 января 2010

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

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

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)

Ответы [ 6 ]

6 голосов
/ 19 января 2010

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

2 голосов
/ 10 января 2013

Кажется, это ошибка, которая была исправлена ​​в версии 4.2.0. Бета-версия валидатора 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

1 голос
/ 12 сентября 2012

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

Валидатор Hibernate в версии 4.0.2.GA (и, вероятно, также в других) обнаруживает версию JPA по классу javax.persistence.PersistenceUtil, поскольку этот класс NOT содержится в 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 голосов
/ 06 апреля 2015

Попробуйте обновить до версии hibernate-validator 4.2 +. У меня была та же проблема с hibernate-validator 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>
0 голосов
/ 01 ноября 2012

Попробуйте добавить ejb3-persistence 1.0.2GA к вашему пути к классам / maven pom:

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

Здесь есть хорошее объяснение: зависимость-ад-или-в-том-jsr303

0 голосов
/ 26 января 2010

Только сейчас я обнаружил, что в java 6 есть текущая зависимость. После обновления до java 6 все вышеперечисленные ошибки исчезли.

http://javaprogrammingtips4u.blogspot.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...