如何将 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 中的文档