当前位置: 首页 > 面试题库 >

java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax / persistence / ValidationMode;

许出野
2023-03-14
问题内容

我正在为spring数据编写示例。这是我的spring.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

<context:component-scan base-package="com.currencyconverter.entity" />

<bean
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="database.properties" />
</bean>

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${driver.name}" />
    <property name="url" value="${database.url}" />
    <property name="username" value="${database.username}" />
    <property name="password" value="${database.password}" />
</bean>

<bean id="currencyRateImpl" class="com.currencyconverter.dao.CurrencyRateImpl">
    <property name="dataSource" ref="dataSource" />
</bean>


<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="com.currencyconverter.entity" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.hbm2ddl.auto">create-drop</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
        </props>
    </property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

这些是我pom.xml中的依赖项

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.2.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.2.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>3.2.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>3.2.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>persistence-api</artifactId>
        <version>1.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.5.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.3.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <version>1.0.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jpa</artifactId>
        <version>2.0.2</version>
    </dependency>
</dependencies>

我还没有使用过persistence.xml 。我正在关注异常

引起原因:java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax
/ persistence / ValidationMode;
在org.hibernate.jpa的org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.mergePropertySources(EntityManagerFactoryBuilderImpl.java:567)的org.hibernate.jpa.boot.internal.PersistenceUnitInfoDescriptor.getValidationMode(PersistenceUnitInfoDescriptor.java:99)处org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl。(EntityManagerFactoryBuilderImpl.java:186)上的.internal.EntityManagerFactoryBuilderImpl。(EntityManagerFactoryBuilderImpl.java:212)在org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java)
:45),位于org.hibernate.jpa的org.hibernate.jpa.boot.spi.Bootstrap.getEntityManagerFactoryBuilder(Bootstrap.java:57)处。

代码有什么问题,依赖关系和版本是否正确,或者对于spring 3.2来说必须是persistance.xml,如果是,那么它应该包含什么内容。


问题答案:

发生此错误是因为引入了JPA 1
API,但方法getValidationMode仅自JPA
2起存在。

而不是跟随

<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>persistence-api</artifactId>
    <version>1.0.2</version>
</dependency>

例如,可以使用Hibernate提供的一种:

<dependency>
  <groupId>org.hibernate.javax.persistence</groupId>
  <artifactId>hibernate-jpa-2.0-api</artifactId>
  <version>1.0.1.Final</version>
</dependency>


 类似资料:
  • 问题内容: 我正在升级jpa,hibernate,spring和jdk,以启用JPA 2.1中的新功能。但是我收到以下错误: 我已经阅读了有关此内容的其他帖子,但是它们无法解决我的计算机上的错误。例如,SJuan76对此帖子的回答建议升级到jpa2.1,但是我已将eclipse jpa项目方面设置为2.1版,并且我也将其包含在pom.xml中。单击此链接,您可以在完整的pom.xml中阅读各种库的

  • 问题内容: 我有一个Play Framework应用程序,并且正在使用Hibernate 4.2.5.Final(可通过Maven依赖管理器检索)。我决定升级到Hibernate 4.3.0.Final,成功重新编译我的应用程序,然后运行它。 我在下面有一个例外,但无法弄清楚原因。我降级到4.2.5,并且没有发生此问题。然后,我尝试在4.2.5之后的每个最终版本中升级Hibernate。也就是说,

  • 问题内容: 所以我在使用Spring JPA和Hibernate来确保我的项目的依赖关系时遇到了这个问题,我的依赖关系看起来是: 我得到的最终错误 我已经找到了所有关于消除依赖关系的解决方案,但是这样的操作导致与无法加载有关的错误。任何线索,我该如何解决? 问题答案: 添加对hibernateJPA2的依赖关系:

  • 我有一个Play框架应用程序,我使用的是Hibernate 4.2。5.最终版本(通过Maven依赖关系管理器检索)。我决定升级到Hibernate4.3。0.最后,成功重新编译我的应用程序并运行它。 我得到了下面的例外,并没有能够找出原因。我降级回到4.2.5,这个问题没有发生。然后,我尝试在4.2.5之后的每个最终版本中升级Hibernate。也就是说,我从4.2.5。最终到4.2.6。最后,

  • Seam Persistence 使得受管的Beans可支持事务处理,同时提供 Seam Managed Persistence Context, a conversation scoped extended persistence context for use in CDI based applications. 使用示例 @Produces @ConversationScoped @Seam

  • Mobile-Persistence(A-Team Mobile Persistence Accelerator )是一个轻量级的持久性框架,可与 Oracle 移动应用框架 (MAF)一起使用。它减轻了 RESTful 服务负载,并提供了一个完整的能够在脱机模式下使用移动应用程序的持久性层。在没有网的情况下,你也可以读写数据,当再次联机时,更改后的数据可以完成同步。当与 JDeveloper 集