Spring Data Mongodb with QueryDsl


plugins {
id 'org.springframework.boot' version '2.6.6'
id "com.ewerk.gradle.plugins.querydsl" version '1.0.10' }


configurations {
compileOnly {
extendsFrom annotationProcessor
} }

repositories {
mavenCentral() }

ext {
queryDslVersion = "5.0.0" }


dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'

//for querydsl
implementation "com.querydsl:querydsl-mongodb:${queryDslVersion}"
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}" }

tasks.named('test') {
useJUnitPlatform() }

def querydslDir = "$buildDir/generated/querydsl"

querydsl {
springDataMongo = true
querydslSourcesDir = querydslDir }

sourceSets {
main.java.srcDir querydslDir }

configurations {
querydsl.extendsFrom compileClasspath }

compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl }

错误:


应用程序启动失败


描述:

尝试调用不存在的方法。尝试从以下位置进行:

com.mongodb.client.internal.MongoClientImpl.createCluster(MongoClientImpl.java:219)

下面的方法不存在:

'com.mongodb.ServerApi com.mongodb.MongoClientSettings.getServerApi()'

调用方法的类com.mongodb.client.internal.MongoClientImpl可从以下位置获得:

jar:file:~/.gradle/caches/modules-2/files-2.1/org.mongodb/mongodb-driver-sync/4.4.2/~/mongodb-driver-sync-4.4.2.jar!/com/mongodb/client/internal/MongoClientImpl.class
jar:file:~/.gradle/caches/modules-2/files-2.1/org.mongodb/mongo-java-driver/3.12.8/~/mongo-java-driver-3.12.8.jar!/com/mongodb/client/internal/MongoClientImpl.class

调用方法的类是从以下位置加载的:

file:~/.gradle/caches/modules-2/files-2.1/org.mongodb/mongodb-driver-sync/4.4.2/~/mongodb-driver-sync-4.4.2.jar

被调用方法的类,com.mongodb。MongoClientSettings,可从以下位置获得:

jar:file:~/.gradle/caches/modules-2/files-2.1/org.mongodb/mongo-java-driver/3.12.8/~/mongo-java-driver-3.12.8.jar!/com/mongodb/MongoClientSettings.class
jar:file:~/.gradle/caches/modules-2/files-2.1/org.mongodb/mongodb-driver-core/4.4.2/~/mongodb-driver-core-4.4.2.jar!/com/mongodb/MongoClientSettings.class

被调用方法的类层次结构是从以下位置加载的:

com.mongodb.MongoClientSettings: file:~/.gradle/caches/modules-2/files-2.1/org.mongodb/mongo-java-driver/3.12.8/~/mongo-java-driver-3.12.8.jar

行动:

纠正应用程序的类路径,使其包含类com.mongodb.client.internal.MongoClientImpl和com.mongodb.MongoClientSettings的兼容版本

  1. 请帮帮我,我不能使用spring-data-starter-mongodbQueryDsl吗?

com.querydsl:querydsl-mongodb:5.0.0提供了一个过时的依赖项org.mongodb:mongo-java-driver:3.12

你应该用mongodb-driver-core代替mongo-java-driver(由spring-boot-starter-data-mongodb自动提供)。你可以在这里找到更多的细节:https://github.com/querydsl/querydsl/issues/3134

所以,你可以简单地替换

implementation "com.querydsl:querydsl-mongodb:${queryDslVersion}"

:

implementation('com.querydsl:querydsl-mongodb') {
exclude group: 'org.mongodb', module: 'mongo-java-driver'
}

这将阻止querydsl-mongodb使用旧的驱动程序。

最新更新