当前位置: 首页 > 知识库问答 >
问题:

SPRING数据-JPA+Eclipselink2.0失败

方焱
2023-03-14

在我的测试项目中,由于以下错误,Spring容器无法创建扩展JPararePository的bean。

原因:org.springframework.beans.factory.BeanCreationException:创建名为“sr svcInfomtrRepository”的bean时出错:FactoryBean在创建对象时引发异常;嵌套异常为java.lang.NosuchMethoderRror:javax.persistence.entityManager.getMetaModel()ljavax/persistence/metaModel/metaModel;

这可能是与JPA版本相关的问题。

我在EclipeLink2.0(org.eclipse.persistence.jpa.persistenceProvider)的persistence.xml中指定了某些persistenceProvider。

你对这个问题有什么想法吗?

JPararePository类()

package net.tjjang.learn.spring_jpa.repositories;
import net.tjjang.learn.spring_jpa.domain.SrSvcInfoMtr;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional;

@Transactional(readOnly = true)
public interface SrSvcInfoMtrRepository extends JpaRepository<SrSvcInfoMtr, String> {
    Page<SrSvcInfoMtr> findBySvc_nm(String svc_nm, Pageable pageable);
}

app-context.xml(不是app-context.xml的所有内容)

    <!-- for data access -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
    p:driverClassName="cubrid.jdbc.driver.CUBRIDDriver" p:url="jdbc:cubrid:localhost:30000:test:test::" 
    p:username="test" p:password="*******" p:initialSize="5" p:maxActive="10"> 
    </bean -->
<bean
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
    id="entityManagerFactory">
    <property name="dataSource" ref="dataSource" />
    <property name="loadTimeWeaver">
        <bean
            class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
    </property>
    <property name="persistenceUnitName" value="JpaPersistenceUnit" />
</bean>

<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<jpa:repositories base-package="net.tjjang.learn.spring_jpa" />
<import resource="infrastructure.xml" />

persistence.xml

    <persistence-unit name="JpaPersistenceUnit"
    transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>net.tjjang.learn.spring_jpa.domain.Car</class>
    <class>net.tjjang.learn.spring_jpa.domain.SrSvcInfoMtr</class>
    <properties>
        <property name="eclipselink.logging.level" value="INFO" />
    </properties>
</persistence-unit>

\org\springframework\spring-core\3.1.0.release\spring-core-3.1.0.release.jar

\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar

\org\springframework\spring-orm\3.1.0.release\spring-orm-3.1.0.release.jar

\org\springframework\spring-tx\3.1.0.release\spring-tx-3.1.0.release.jar

\org\springframework\spring-aspects\3.1.0.release.jar

\org\springframework\spring-context\3.1.0.release\spring-context-3.1.0.release.jar

\org\springframework\spring-expression\3.1.0.release.jar

\org\springframework\spring-context-support\3.1.0.release\spring-context-support-3.1.0.release.jar

\org\springframework\spring-beans\3.1.0.release\spring-beans-3.1.0.release.jar

\org\springframework\spring-test\3.1.0.release\spring-test-3.1.0.release.jar

\org\springframework\spring-instrument\3.1.0.release.jar

\junit\junit\4.8.2\junit-4.8.2.jar

\org\slf4j\slf4j-log4j12\1.6.0\slf4j-log4j12-1.6.0.jar

\log4j\log4j\1.2.16\log4j-1.2.16.jar

\cubrid\cubrid-jdbc\8.4.1.2032\cubrid-jdbc-8.4.1.2032.jar

\org\springframework\data\spring-data-jpa\1.0.3.release.jar

\org\springframework\data\spring-data-commons-core\1.1.0.release.jar

\org\hibernate\ejb3-persistence\1.0.2.ga\ejb3-persistence-1.0.2.ga.jar

共有1个答案

西门淮晨
2023-03-14

Spring Data JPA需要JPA2.0。您已经将它的1.0版本放到了您的类路径中(ejb3-persistence-1.0.2.ga.jar)。确保使用支持JPA2.0的EclipseLink的最新版本。版本2.3.2是当前的发行版本。

 类似资料:
  • 我有两个实体。父母和孩子。 儿童知识库。JAVA 我试图通过标准找到子实体,它应该总是有父实体。 我得到一个例外,它试图在地址表中找到parentObj。 我找到了这个链接,并尝试了Joep给出的解决方案,但出现了相同的错误。 Spring数据JPA JpaSpecificationExecator EntityGgraph 我错过了什么。我无法理解为什么/如何在just Child对象中查找pa

  • 问题内容: 以下是我的申请流程 控制器-服务-存储库 在服务层,我们具有注释。我们还具有配置,在其中指定实体管理器和txn管理器。 我的怀疑是我认为考虑了在其中指定的txn管理器,并且在服务层进行指定没有影响。例如:服务层可以映射到自定义的txn管理器,其中服务调用的存储库可能具有不同的txn管理器。在那种情况下会不会造成问题? 有人可以澄清一下,在使用jpa存储库时是否需要将其放置在服务层上?

  • 实现类 我正在尝试使用mockito为我的分页代码编写Junit测试用例,但它失败了,因为它期望方法的返回类型为Page.但是我返回客户列表。 我得到以下错误 如果您不确定为什么会出现上述错误,请继续阅读。由于语法的性质,可能会出现上述问题,因为: > 在错误编写的多线程测试中可能会发生此异常。有关并发测试的限制,请参阅莫基托常见问题解答。 间谍使用当(间谍.foo()).then()语法进行存根

  • 我正在努力让Spring JPA Data为我工作,但一直在努力。问题出在这里。 我有两个域类,它们之间有一个简单的一对多关系: 我已经为每个类设置了存储库接口:CardRepository,扩展JpaRepository的用户存储库,两个存储库都注入到服务中 非常基本的设置。someMethod() 出现问题,其中我用它的标识符查询了一个用户,然后尝试获取映射@OneToMany的列表,然后发生

  • 我有3个实体在我的数据库。实体A具有主密钥PK-A,实体B具有主密钥PK-B,实体C具有主密钥PK-C。 实体A与实体B具有1对多关系,实体B与实体C具有1对多关系 我想在Spring Data JPA中基于PK-A(实际上是实体B中的外键)查询实体C。有可能吗? 但这行不通。还有什么建议我可以试试吗?

  • 在从DB表检索记录时,我们得到了异常。我在另一张桌子上也做了同样的尝试,它起作用了,但在这张桌子上,它不起作用了。我使用的是 在这里,我创建了一个具有 get 映射的 Controller 类 我收到此异常 SEVERE:Servlet.service()的servlet[调度服务器]在上下文中与路径[]抛出异常(请求处理失败;嵌套异常org.springframework.core.conver