【问题标题】:Hibernate 4 upgrade (java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode())Hibernate 4 升级 (java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode())
【发布时间】:2013-12-09 23:21:30
【问题描述】:

我正在尝试将我的应用程序从 hibernate 3.4 升级到 4.1.0 FINAL 版本并收到下面提到的错误。

我现在使用的是 spring 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 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)

我按照以下链接升级应用程序。帮助表示赞赏。

【问题讨论】:

标签: java spring hibernate maven upgrade


【解决方案1】:

您的运行时是 Java EE 5(或更早版本),而代码预期是 Java EE 6。查看Java EE 5's PersistenceUnitInfo 没有这样的方法getValidationModel()。您可以通过将运行时升级到 Java EE 6 来解决此问题

【讨论】:

    【解决方案2】:

    我使用的是 1.0.0 版本的 javax 持久性库

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

    更改版本修复它。,

    【讨论】:

      【解决方案3】:

      就我而言,我使用 spring-boot-jpajavax.persistence.jpa 导致依赖项崩溃。 删除 javax.persistence.jpa 会有所帮助。

      检查你的依赖,检查一些依赖是否重复。 (mvn 依赖树) (在 Idea 点击 maven tools 并点击 SHOW DEPENDENCIES

      【讨论】:

        猜你喜欢
        • 2014-04-05
        • 2016-04-29
        • 2015-02-27
        • 1970-01-01
        • 2015-09-21
        • 1970-01-01
        • 1970-01-01
        • 2010-12-10
        • 2011-12-31
        相关资源
        最近更新 更多