2010-07-19 111 views
1

使用Hibernate的EntityManager 3.5.3決賽與Unitils一起3.1結果:我可以使用當前版本的Unitils(3.1)與JPA 2.0嗎?

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

回答

5

的原因是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:

<properties> 
    <spring.version>3.0.3.RELEASE</spring.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

(2)包含一個修補MutablePersistenceUnitInfo

  • 重複春節MutablePersistenceUnitInfo在您的項目(並確保它在classpath preceeds傳統春節版)
  • 添加缺少的方法吧。
@Override 
public String getPersistenceXMLSchemaVersion() { 
    return "1.0"; 
} 

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

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

[回答自己供日後參考]

+0

對於問題和答案都是+1 – 2010-07-19 14:05:23

+0

幹得好!最佳答案! – Gadi 2011-12-31 21:01:39

0

也沒有直接回答原來的問題,但主幹版本(4.0-SNAPSHOT)具有彈簧3.0依賴。在引擎蓋下,JPA支持將被重新設計爲使用Spring(1)。

相關問題