복붙노트

[SPRING] SpringPersistenceUnitInfo :: AbstractMethodError

SPRING

SpringPersistenceUnitInfo :: AbstractMethodError

Spring 3.0.5, JPA2, Hibernate 3.6.7을 사용하는 애플리케이션이있다. 메이븐이 내 의존성 관리를 처리하고있어. 다음은 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 컨테이너는 다음에 대해 불평합니다 :

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.AbstractMethodError: org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)

어떤 일이 일어날 수 있는지에 대한 생각? 모든 종속성은 손상되지 않은 것처럼 보입니다.

감사.

해결법

  1. ==============================

    1.Spring 2.x 및 3.x의 아티팩트를 혼합하고 있습니다.

    Spring 2.x 및 3.x의 아티팩트를 혼합하고 있습니다.

    이전 버전의 spring-hibernate3과 spring-jpa를

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

    2.나는 똑같은 문제가 있었다. 나는 최대 절전 유효성 검사기 (4.2), 바람둥이 6 및 봄 3.0.6이었다. 하지만 나는 또한 3.2에서 3.6으로 hibernate를 업그레이드했지만 classpath에서 hibernate-entitymanager.jar (이전의 최대 절전 모드 병)을 제거하는 것을 잊었다.

    나는 똑같은 문제가 있었다. 나는 최대 절전 유효성 검사기 (4.2), 바람둥이 6 및 봄 3.0.6이었다. 하지만 나는 또한 3.2에서 3.6으로 hibernate를 업그레이드했지만 classpath에서 hibernate-entitymanager.jar (이전의 최대 절전 모드 병)을 제거하는 것을 잊었다.

  3. ==============================

    3.나는 Hibernate 4.x, Spring 3.x, JPA 2.x, CXF 2.7.5와 매우 비슷한 문제를 가지고 있었다. 내 Paven 파일의 spring-jpa artifact에 대한 참조를 삭제하고 추천 스 니펫을 삽입했습니다. 일하는 마술! 나는 더 이상 예외를 볼 수 없다. 감사!

    나는 Hibernate 4.x, Spring 3.x, JPA 2.x, CXF 2.7.5와 매우 비슷한 문제를 가지고 있었다. 내 Paven 파일의 spring-jpa artifact에 대한 참조를 삭제하고 추천 스 니펫을 삽입했습니다. 일하는 마술! 나는 더 이상 예외를 볼 수 없다. 감사!

  4. from https://stackoverflow.com/questions/8034545/springpersistenceunitinfo-abstractmethoderror by cc-by-sa and MIT license