如何将 querydsl-mongodb 添加到 Spring Boot Gradle 5.6.1 项目

Posted

技术标签:

【中文标题】如何将 querydsl-mongodb 添加到 Spring Boot Gradle 5.6.1 项目【英文标题】:How to add querydsl-mongodb to Spring Boot Gradle 5.6.1 project 【发布时间】:2020-04-22 03:16:42 【问题描述】:

我正在尝试从 spring boot gradle 项目创建对 mongo 数据库的动态查询。 我的 gradle 版本:5.6.1

这是我的 build.gradle 文件:

plugins 
    id 'org.springframework.boot' version '2.2.2.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'


group = 'com.onssoftware'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories 
    mavenCentral()


dependencies 

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

    // https://mvnrepository.com/artifact/com.querydsl/querydsl-mongodb
    compile group: 'com.querydsl', name: 'querydsl-mongodb', version: '4.2.2'

    // https://mvnrepository.com/artifact/com.querydsl/querydsl-apt
    compile group: 'com.querydsl', name: 'querydsl-apt', version: '4.2.2'
    //annotationProcessor group: 'com.querydsl', name: 'querydsl-apt', version: '4.2.2'

    annotationProcessor "com.querydsl:querydsl-apt:4.2.2"
    //annotationProcessor("org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor")

    testImplementation('org.springframework.boot:spring-boot-starter-test') 
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    


test 
    useJUnitPlatform()


我的 application.properties 文件:


spring.data.mongodb.username = user
spring.data.mongodb.password = pass
spring.data.mongodb.host = 172.17.0.2
spring.data.mongodb.port = 27017
spring.data.mongodb.database = test_db

问题是:没有为我的文档生成 Q 类。 欢迎任何建议。谢谢。

【问题讨论】:

你有没有设法让它运行?我面临同样的问题。已经在 github 上问过,但那里似乎不太活跃:github.com/querydsl/querydsl/issues/2617 @viktorgt 请看我的回答。 【参考方案1】:

可能,与Java QueryDsl code generation does not generate Q class 重复

也许是因为 Gradle 版本:尝试检查这个https://github.com/ewerk/gradle-plugins/issues/112

或者你忘记包含

compile group: 'org.mongodb.morphia', name: 'morphia', version: '1.3.2'

同时,我将尝试使用@viktorgt 存储库进行复制

【讨论】:

与github.com/querydsl/querydsl/issues/2617 一样,query-dsl gradle 插件已被弃用,并且对于 gradle > 5 是不必要的。也不需要 morphia 依赖项,因为使用了 spring 注释并且应该选择 spring 注释处理器向上(org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor)。尽管如此,还是缺少一些东西。【参考方案2】:

我通过添加 @Document 和 @Entity 注释使其工作。

import org.springframework.data.mongodb.core.mapping.Document;
import javax.persistence.Entity;

@Document
@Entity
public class MCQ 

我的 build.gradle 文件是这样的:

// https://mvnrepository.com/artifact/org.hibernate/hibernate-annotations
compile group: 'org.hibernate', name: 'hibernate-annotations', version: '3.5.6-Final'
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
// https://mvnrepository.com/artifact/com.querydsl/querydsl-mongodb
compile group: 'com.querydsl', name: 'querydsl-mongodb', version: '4.2.2'
// https://mvnrepository.com/artifact/com.querydsl/querydsl-apt
annotationProcessor "com.querydsl:querydsl-apt:4.2.2:jpa", "org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final"

// https://mvnrepository.com/artifact/com.google.code.morphia/morphia
//annotationProcessor group: 'com.google.code.morphia', name: 'morphia', version: '0.104'

// https://mvnrepository.com/artifact/org.mongodb.morphia/morphia
//annotationProcessor group: 'org.mongodb.morphia', name: 'morphia', version: '1.3.2'
//annotationProcessor("org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor")

我的 gradle 版本:5.6.2

【讨论】:

以上是关于如何将 querydsl-mongodb 添加到 Spring Boot Gradle 5.6.1 项目的主要内容,如果未能解决你的问题,请参考以下文章

如何将子集合添加到 Firebase Cloud Firestore 中的文档

如何将代码隐藏页面添加到视图或部分视图

如何将 QWidget 添加到 QMenuBar?

如何将 UIView 添加到 CALayer

如何将 Groups 添加到 ListView,然后将 Items 添加到 Groups

如何将 UIPanGestureRecognizer 添加到 UIScrollView 子视图