Hibernate 4升级(java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()) [英] Hibernate 4 upgrade (java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode())

查看:222
本文介绍了Hibernate 4升级(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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆