Spring data mongodb 不能在 spring webmvc 应用程序中与 spring data jpa 一起使用

问题描述 投票:0回答:1

我有一个旧版 spring mvc Web 应用程序,它使用 spring data jpa 1.9.5。当我添加 spring data mongodb 1.9.5 的依赖项时,相同的应用程序就会中断。

POM:

<dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-mongodb</artifactId>
            <version>1.9.5.RELEASE</version>

        </dependency>

    <!-- Spring Data JPA -->
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.9.5.RELEASE</version>
    </dependency>

显示错误

引起:java.lang.AbstractMethodError:org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(Ljava/lang/reflect/Method;Lorg/springframework/data/repository/core/RepositoryMetadata;Lorg/ springframework/data/projection/ProjectionFactory;Lorg/springframework/data/repository/core/NamedQueries;)Lorg/springframework/data/repository/query/RepositoryQuery;
在 org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor。(RepositoryFactorySupport.java:435)

org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:220)

spring data jpa 哪个版本与 spring data mongodb 兼容。 ?

spring-data-jpa spring-data spring-data-mongodb spring-web
1个回答
0
投票

我已经回答了类似问题。通常,您可以将

spring-data-mongodb
spring-data-jpa
数据模块组合在一个应用程序中,应该没什么大不了的。
AbstractMethodError
通常不应该发生,因为抽象方法的调用应该被编译器捕获。

如果发生这种情况,这基本上意味着在运行时,JVM 加载了某个抽象类的不兼容版本(在您的情况下,它很可能是

JpaQueryLookupStrategy.AbstractQueryLookupStrategy
类)。

因此,我建议扔掉任何 spring-data 项目版本,只使用

spring-boot-starter-parent
作为父 pom,或者如果不可能,只需添加
spring-boot-dependencies
作为范围为
import
的依赖管理,例如这(将版本更改为您喜欢的版本):

<dependencyManagement>
     <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>3.1.5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

作为旁注,大多数 spring-data 模块可以组合在一个应用程序中,但是需要满足一些条件(再次检查我对类似问题的回答),但情况并非总是如此。例如,长期以来,

spring-data-jr2dbc
spring-data-jdbc
在一个应用程序中使用不兼容(现在我们在这里修复了它)。

© www.soinside.com 2019 - 2024. All rights reserved.