Могу ли я использовать текущую версию Unitils (3.1) с JPA 2.0? - PullRequest
1 голос
/ 19 июля 2010

Использование Hibernate EntityManager 3.5.3-Final вместе с Unitils 3.1 приводит к:

unitilsAfterTestTearDown(com.unifiedpost.payments.model.TestAccount)  Time elapsed: 0.02 sec  <<< FAILURE!
java.lang.AbstractMethodError: org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:621)
        at org.unitils.orm.jpa.util.provider.hibernate.UnitilsHibernatePersistenceProvider.createContainerEntityManagerFactory(UnitilsHibernatePersistenceProvider.java:47)
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:227)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:281)
        at org.unitils.orm.jpa.util.JpaEntityManagerFactoryLoader.createEntityManagerFactoryBean(JpaEntityManagerFactoryLoader.java:77)

Об этом также сообщается в: http://jira.unitils.org/browse/UNI-201

Ответы [ 2 ]

5 голосов
/ 19 июля 2010

Причина в том, что unitils-orm зависит от версии 2.5.x Spring, которая еще не готова к JPA2.

[INFO] +- org.unitils:unitils-testng:jar:3.1:test
[INFO] +- org.unitils:unitils-orm:jar:3.1:test
[INFO] |  +- org.unitils:unitils-spring:jar:3.1:test
[INFO] |  |  +- org.springframework:spring-core:jar:2.5.2:test
[INFO] |  |  +- org.springframework:spring-beans:jar:2.5.2:test
[INFO] |  |  +- org.springframework:spring-test:jar:2.5.2:test
[INFO] |  |  \- org.springframework:spring-tx:jar:2.5.2:test

Смотри также:

У вас есть 2 варианта обхода проблемы:

(1) Патчи Unitils:

  • Оформить заказ (http://www.unitils.org/source-repository.html)
  • Исправить корень пом: сделать его зависимым от 3.0.1. ВЫПУСК (или выше)
  • Создание выпуска локально
  • Используйте это как новый пакет Unitils
<properties>
    <spring.version>3.0.3.RELEASE</spring.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

(2) Включить исправленную MutablePersistenceUnitInfo

  • Duplicate Spring MutablePersistenceUnitInfo в вашем проекте (и убедитесь, что он предшествует устаревшей версии Spring в classpath)
  • Добавьте недостающие методы к нему.
@Override
public String getPersistenceXMLSchemaVersion() {
    return "1.0";
}

@Override
public SharedCacheMode getSharedCacheMode() {
    return SharedCacheMode.NONE;
}

@Override
public ValidationMode getValidationMode() {
    return ValidationMode.NONE;
}

[Ответил сам для дальнейшего использования]

0 голосов
/ 27 декабря 2010

Также не является прямым ответом на исходный вопрос, но версия магистрали (4.0-SNAPSHOT) имеет зависимость от Spring 3.0. Под капотом опора JPA будет переработана для использования пружины ( 1 ).

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