Hibernate 4升级(java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()) [英] Hibernate 4 upgrade (java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode())
问题描述
我试图将我的应用程序从休眠3.4升级到4.1.0 FINAL版本并获得下面提到的错误。
现在我正在使用spring 3.2。我的pom文件如下所示。
<依赖关系>
< groupId> org.hibernate< / groupId>
< artifactId> com.springsource.org.hibernate< / artifactId>
< version> 4.1.0.Final< / version>
<排除项>
<排除>
< groupId> commons-logging< / groupId>
< artifactId> commons-logging< / artifactId>
< /排除>
< /排除>
< /依赖关系>
<! - Hibernate JPA Provider - >
< dependency>
< groupId> org.hibernate< / groupId>
< artifactId> com.springsource.org.hibernate.ejb< / artifactId>
< version> 4.1.0.Final< / version>
<排除项>
<! - 排除Commons记录SLF4j - >
<排除>
< groupId> org.apache.commons< / groupId>
< artifactId> com.springsource.org.apache.commons.logging< / artifactId>
< /排除>
< /排除>
< /依赖关系>
以下是实体管理器和会话工厂
< bean id =testSessionFactory
class =org.springframework.orm.hibernate4.LocalSessionFactoryBean
autowire =byName>
< property name =dataSourceref =testDataSource/>
< property name =annotatedClasses>
< list>
<值>测试< /值>
< / list>
< / property>
< property name =hibernateProperties>
<道具>
< prop key =hibernate.dialect> org.hibernate.dialect.MySQLDialect< / prop>
< prop key =hibernate.show_sql> false< / prop>
< prop key =hibernate.hbm2ddl.auto>验证< / prop>
< /道具>
< / property>
< / bean>
< bean id =transactionManagerclass =org.springframework.orm.jpa.JpaTransactionManager>
< property name =entityManagerFactoryref =entityManagerFactory/>
< / bean>
< bean id =entityManagerFactory
class =org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean>
< property name =persistenceUnitNamevalue =unit/>
< property name =jpaVendorAdapter>
< bean class =org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter>
< property name =generateDdlvalue =false/>
< property name =showSqlvalue =true/>
< / bean>
< / property>
< property name =dataSource>
< ref bean =datasource/>
< / property>
< property name =jpaProperties>
<道具>
< 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>
< /道具>
< / property>
< / bean>
以下是错误。
[错误] [main] 12-09 15:05:55,168 [ContextLoader] - 上下文初始化失败
org .springframework.beans.factory.BeanCreationException:在类路径资源[api-service.xml]中定义的名为'entityManagerFactory'的bean创建时出错:init方法的调用失败;嵌套异常是java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax / persistence / ValidationMode;
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1512)
at
引起:java.lang.NoSuchMethodError:javax.persistence .spi.PersistenceUnitInfo.getValidationMode()Ljavax /持久/ 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
at
[错误] [main] 12-09 15:05:55,169 [日志] - 上下文org.mortbay.jetty失败启动。 webapp.WebAppContext@3a780024 {/,file:/ Users / Aanchal / avos / platform / src / avos-api / src / main / webapp /}
org.springframework.beans.factory.BeanCreationException:名称'entityManagerFactory'在类路径资源中定义ce [api-service.xml]:调用init方法失败;嵌套异常是java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax / persistence / ValidationMode;在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1512)
在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
由java.lang.NoSuchMethodError引发:javax.persistence.spi.PersistenceUnitInfo。 getValidationMode()Ljavax /持久/ ValidationMode;
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:633)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73)
我按照以下链接升级应用程序。帮助表示赞赏。
您的运行时是Java EE 5(或更早),而代码期望Java EE 6。 href =http://docs.oracle.com/javaee/5/api/javax/persistence/spi/PersistenceUnitInfo.html =nofollow> Java EE 5的PersistenceUnitInfo 没有这样的方法 getValidationModel()
。您可以通过将运行时升级到Java EE 6
来修复此问题
I am trying to upgrade my application from hibernate 3.4 to 4.1.0 FINAL version and getting the below mentioned error.
I am using spring 3.2 right now. and my pom file looks like the following.
<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>
Following is the entity manager and session factory
<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>
Following is the error.
[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 org.mortbay.jetty.webapp.WebAppContext@3a780024{/,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)
I followed the following link to upgrade the application. Help is appreciated.
You're runtime is Java EE 5 (or older) while the code is expecteding Java EE 6. Looking at Java EE 5's PersistenceUnitInfo there's no such method getValidationModel()
. You might be able to fix this simply by upgrading runtime to Java EE 6
这篇关于Hibernate 4升级(java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode())的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!