代码之家  ›  专栏  ›  技术社区  ›  Jan

我可以在jpa2.0中使用当前版本的Unitils(3.1)吗?

  •  1
  • Jan  · 技术社区  · 15 年前

    3.5.3-最终

    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 回复  |  直到 15 年前
        1
  •  5
  •   Jan    15 年前

    原因是unitils orm依赖于Spring的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
    

    您有两个解决方法选项:

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

    (2) 包括修补的MutablePersistenceUnitInfo

    • 在项目中复制Spring MutablePersistenceUnitInfo(并确保它在类路径中位于遗留Spring版本之前)
    @Override
    public String getPersistenceXMLSchemaVersion() {
        return "1.0";
    }
    
    @Override
    public SharedCacheMode getSharedCacheMode() {
        return SharedCacheMode.NONE;
    }
    
    @Override
    public ValidationMode getValidationMode() {
        return ValidationMode.NONE;
    }
    

        2
  •  0
  •   napu    14 年前

    1 ).