2011-11-07 9 views
6

Tengo una aplicación que utiliza Spring 3.0.5, JPA2 e Hibernate 3.6.7. Maven está manejando mi gestión de dependencia. He aquí un extracto de pom:SpringPersistenceUnitInfo :: AbstractMethodError

<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> 
... 

La aplicación construye muy bien, sin embargo, cuando se trata de cargarlo, el contenedor Tomcat se queja de lo siguiente:

 
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) 

Alguna idea sobre lo que podría ser la causa de esto? Todas las dependencias parecen estar intactas.

Gracias.

Respuesta

6

Está mezclando artefactos de Spring 2.xy 3.x.

Reemplazar las versiones antiguas de spring-hibernate3 y spring-jpa con

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

gracias por señalar eso. Eliminar la referencia a spring-hibernate3 parece aclarar las cosas – eugene

0

que tenía exactamente el mismo problema. Yo era hibernate validator (4.2), tomcat 6 y spring 3.0.6. Pero también actualicé hibernate de 3.2 a 3.6, pero olvidé eliminar el hibernate-entitymanager.jar (que es un antiguo contenedor de hibernación) de classpath.

0

Tuve un problema muy similar con Hibernate 4.x, Spring 3.x, JPA 2.x y CXF 2.7.5. Quité la referencia al artefacto spring-jpa en mi archivo POM de maven e inserté el fragmento recomendado. ¡Magia trabajada! Ya no veo la excepción. ¡Gracias!