2013-12-09 4 views
2

Я пытаюсь обновить свое приложение с версии hibernate 3.4 до 4.1.0 FINAL и получить указанную ниже ошибку.Обновление Hibernate 4 (java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode())

Я использую весной 3.2 прямо сейчас. и мой pom-файл выглядит следующим образом.

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>com.springsource.org.hibernate</artifactId> 
     <version>4.1.0.Final</version> 
     <exclusions> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <!-- Hibernate JPA Provider --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>com.springsource.org.hibernate.ejb</artifactId> 
     <version>4.1.0.Final</version> 
     <exclusions> 
      <!-- Exclude Commons Logging in favor of SLF4j --> 
      <exclusion> 
       <groupId>org.apache.commons</groupId> 
       <artifactId>com.springsource.org.apache.commons.logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

Ниже менеджер организация и сессионный завод

<bean id="testSessionFactory" 
     class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" 
     autowire="byName"> 
     <property name="dataSource" ref="testDataSource" /> 
     <property name="annotatedClasses"> 
      <list> 
       <value>test</value> 
      </list> 
     </property> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
       <prop key="hibernate.show_sql">false</prop> 
       <prop key="hibernate.hbm2ddl.auto">validate</prop> 
      </props> 
     </property> 
    </bean> 
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
     <property name="entityManagerFactory" ref="entityManagerFactory" /> 
    </bean> 
<bean id="entityManagerFactory" 
     class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
     <property name="persistenceUnitName" value="unit" /> 
     <property name="jpaVendorAdapter"> 
      <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
       <property name="generateDdl" value="false" /> 
       <property name="showSql" value="true" /> 
      </bean> 
     </property> 
     <property name="dataSource"> 
      <ref bean="datasource" /> 
     </property> 
     <property name="jpaProperties"> 
      <props> 
       <prop key="hibernate.generate_statistics">false</prop> 
       <prop key="hibernate.cache.use_second_level_cache">false</prop> 
       <prop key="hibernate.cache.use_query_cache">false</prop> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
       <prop key="hibernate.show_sql">"true"</prop> 
      </props> 
     </property> 
    </bean> 

Ниже ошибка.

[ERROR] [main] 12-09 15:05:55,168 [ContextLoader] - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [api-service.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode; 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1512) 
    at 

Caused by: java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode; 
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:633) 
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) 
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:288) 
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571) 
    at 
[ERROR] [main] 12-09 15:05:55,169 [log] - Failed startup of context [email protected]{/,file:/Users/Aanchal/avos/platform/src/avos-api/src/main/webapp/} 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [api-service.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode; 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1512) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 

Caused by: java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode; 
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:633) 
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) 

Я применил следующую ссылку для обновления приложения. Помощь приветствуется.

+0

забыл поставить ссылку - http://spring.io/blog/2012/04/06/migrating-to-spring- 3-1-и-Hibernate-4-1 –

ответ

2

Вы исполняете Java EE 5 (или старше), в то время как код ожидается Java EE 6. Глядя на Java EE 5's PersistenceUnitInfo, такого метода нет getValidationModel(). Вы можете быть в состоянии исправить это просто путем обновления среды выполнения для Java EE 6

1

Я с использованием версии 1.0.0 javax живучесть Lib

<dependency> 
<groupId>javax.persistence</groupId> 
<artifactId>com.springsource.javax.persistence</artifactId> 
<version>2.0.0</version> 
</dependency> 

Изменение версии установил ее.,

0

В мой случай, я использую spring-boot-jpa и javax.persistence.jpa, которые вызывают зависания зависимостей. Удалить javax.persistence.jpa будет полезно.

Проверьте свои зависимости, проверьте, являются ли некоторые зависимости повторяющимися. (дерево МВН зависимость) (В Idea клик Maven инструментов и нажмите ВЫСТАВКАХ ЗАВИСИМОСТИ

Смежные вопросы