Как использовать javax / persistence / spi / PersistenceUnitInfo.getValidationMode () с WAS 6.1 - PullRequest
4 голосов
/ 17 октября 2011

Я использую JPA 2.0 с Spring и hibernate в моем проекте.

Однако время выполнения - WAS 6.1.

Компиляция идет хорошо.

Однако при развертывании приложения я получаю следующую ошибку:

com.ibm.ws.exception.RuntimeError: java.lang.RuntimeException: java.lang.NoSuchMethodError: javax/persistence/spi/PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;

При поиске класса PersistenceUnitInfo с помощью ctrl + shift + T я обнаружил, что он находится в следующих jar-файлах:

\IBM\SDP\runtimes\base_v61\lib\j2ee.jar

и

\WEB-INF\lib\hibernate-jpa-2.0-api-1.0.1.Final

Я извлек класс из обоих JARS и декомпилировал их, используя JAD для сравнения.

Я обнаружил, что метод getValidationMode () отсутствует в j2ee.jar, но присутствует в jiber hibernate-jpa.

Это причина ошибки, которую я получаю ??? Как это решить ?? Как я могу сказать websphere искать класс в jibernate jar, а не в lib времени выполнения сервера ???

1 Ответ

2 голосов
/ 17 октября 2011

Вы не можете использовать JPA 2.0 с Websphere 6.1, независимо от того, что вы делаете.Как вы заметили, он довольно глубоко подключен к внутренним компонентам WAS.У вас есть два варианта:

  1. Миграция на WAS 7.0 с соответствующим пакетом функций (дополнительную информацию см. В моем другом ответе ).
  2. Понизьте Hibernate до 3.3.2GA с JPA 1.0.
...