【问题标题】:SpringPersistenceUnitInfo :: AbstractMethodErrorSpringPersistenceUnitInfo :: AbstractMethodError
【发布时间】:2011-11-07 09:13:55
【问题描述】:

我有一个使用 Spring 3.0.5、JPA2 和 Hibernate 3.6.7 的应用程序。 Maven 处理我的依赖管理。这是一个 pom 摘录:

<properties>
  <spring.version>3.0.5.RELEASE</spring.version>
</properties>
<dependencies>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
  </dependency>
...
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-hibernate3</artifactId>
    <version>2.0.8</version>
    <scope>compile</scope>
      <exclusions>
         <exclusion>
       <groupId>org.hibernate</groupId>
       <artifactId>hibernate</artifactId>
     </exclusion>
      </exclusions>
  </dependency>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>3.6.7.Final</version>
  </dependency>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>3.6.7.Final</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jpa</artifactId>
    <version>2.0.8</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.hibernate.java-persistence</groupId>
    <artifactId>jpa-api</artifactId>
    <version>2.0-cr-1</version>
    <scope>compile</scope>
  </dependency>
...

应用程序构建得很好,但是,当尝试加载它时,Tomcat 容器会抱怨以下内容:

原因:org.springframework.beans.factory.BeanCreationException:在 ServletContext 资源 [/WEB-INF/applicationContext.xml] 中定义名称为“entityManagerFactory”的 bean 创建错误:调用 init 方法失败;嵌套异常是 java.lang.AbstractMethodError: org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode; 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)

对可能导致这种情况的任何想法?所有依赖项似乎都完好无损。

谢谢。

【问题讨论】:

    标签: spring jpa-2.0


    【解决方案1】:

    您正在混合来自 Spring 2.x 和 3.x 的工件。

    将旧版本的 spring-hibernate3spring-jpa 替换为

    <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-orm</artifactId>
         <version>${spring.version}</version>
         <scope>compile</scope>
    </dependency> 
    

    【讨论】:

    • 感谢您指出这一点 - 删除对 spring-hibernate3 的引用似乎可以解决问题
    【解决方案2】:

    我遇到了完全相同的问题。我是休眠验证器(4.2)、tomcat 6 和 spring 3.0.6。但我也将 hibernate 从 3.2 升级到 3.6,但我忘记从类路径中删除 hibernate-entitymanager.jar(这是一个旧的 hibernate jar)。

    【讨论】:

      【解决方案3】:

      我在使用 Hibernate 4.x、Spring 3.x、JPA 2.x 和 CXF 2.7.5 时遇到了非常相似的问题。我在我的 maven POM 文件中删除了对 spring-jpa 工件的引用,并插入了您推荐的 sn-p。施展魔法!我不再看到异常。谢谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-30
        • 2020-03-02
        • 2016-02-16
        相关资源
        最近更新 更多