SpringBoot 2.6.1 与 Querydsl Mongodb 不兼容?

Posted

技术标签:

【中文标题】SpringBoot 2.6.1 与 Querydsl Mongodb 不兼容?【英文标题】:SpringBoot 2.6.1 incompatibility with Querydsl Mongodb? 【发布时间】:2022-01-13 12:45:39 【问题描述】:

我正在将 Java 11 (SpringBoot 2.4.1) 应用程序升级到 Java 17 和 Spring 2.6.1。

在使用 SpringBoot 2.4.1 时,我有以下依赖项:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>

    ...

    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-apt</artifactId>
        <version>$querydsl.version</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-mongodb</artifactId>
        <version>$querydsl.version</version>
    </dependency>

$querydsl.version 由 SpringBoot 依赖管理管理。

但是当升级到 SpringBoot 2.6.1 时,我遇到了这种不兼容问题:

spring-boot-starter-data-mongodb带来mongodb-driver-core/4.4.0 querydsl-mongodb带来mongo-java-driver/3.12.8

我得到这个错误:

The called method's class, com.mongodb.connection.ClusterSettings, is available from the following locations:

    jar:file:/C:/Users/SXBN9329/.m2/repository/org/mongodb/mongodb-driver-core/4.4.0/mongodb-driver-core-4.4.0.jar!/com/mongodb/connection/ClusterSettings.class
    jar:file:/C:/Users/SXBN9329/.m2/repository/org/mongodb/mongo-java-driver/3.12.8/mongo-java-driver-3.12.8.jar!/com/mongodb/connection/ClusterSettings.class

Action:

Correct the classpath of your application so that it contains compatible versions of the classes com.mongodb.connection.DefaultClusterFactory and com.mongodb.connection.ClusterSettings

有人有办法解决这个问题吗?

【问题讨论】:

查询DSL 5 should support MongoDB 4。您是否尝试过排除 3.12 驱动程序? @AndyWilkinson 我试过了,但没有成功。我已经找到原因了,我会发布答案。 【参考方案1】:

我找到了原因:另一个模块依赖于spring-data-mongodb。所以我同时拥有spring-data-mongodbspring-boot-starter-data-mongodb

这似乎不适用于 QueryDSL ^^

我已在另一个模块中将spring-data-mongodb 替换为spring-boot-starter-data-mongodb,它现在可以工作了。

【讨论】:

以上是关于SpringBoot 2.6.1 与 Querydsl Mongodb 不兼容?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 2.6.1 正式发布,2.4.x Game Over,2.5.0 成最低支持版本。。

springboot集成swagger

drf序列化器的实例

springboot+swagger

升级到 Spring Boot 2.6.1 和 Spring Cloud 2021.0.0 后 Spring Cloud Stream 启动错误

SpringBoot SpringBoot整合Swagger2(自动化生成接口文档)