【发布时间】:2019-09-16 03:48:27
【问题描述】:
我正在尝试将 querydsl 添加到现有系统,但在获取生成的 Q 源进行编译时遇到问题。我已经阅读了几个类似的问题和解释(https://spring.io/blog/2015/09/04/what-s-new-in-spring-data-release-gosling#querydsl-web-support、https://blog.jdriven.com/2018/10/using-querydsl-annotation-processor-with-gradle-and-intellij-idea/(即使这与想法有关)),几乎所有 querydsl 的堆栈溢出问题......
这是我的 build.gradle 的一部分,它描述了问题所在:
ext {
...
querydslVersion = '4.2.1'
}
sourceSets {
generated {
java {
srcDirs = [ 'build/generated' ]
}
}
main {
java {
srcDirs = [ 'src/main/java' ]
}
}
}
...
dependencies {
...
compile("com.querydsl:querydsl-core:${querydslVersion}")
compile("com.querydsl:querydsl-jpa:${querydslVersion}")
compile "com.querydsl:querydsl-apt:$querydslVersion:jpa"
compileOnly group: 'org.projectlombok', name: 'lombok'
annotationProcessor(
"com.querydsl:querydsl-apt:${querydslVersion}:jpa",
"org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final",
"javax.annotation:javax.annotation-api:1.3.2",
"org.projectlombok:lombok"
)
}
当我尝试构建时,我收到错误:cannot find symbol QuerydslBinderCustomizer<QSample> 在存储库类中。 QSample.java 是根据模型 Sample 生成的,它位于
/build/generated/sources/annotationProcessor/java/main/com/prep/ws/model/QSample.java.
由于它位于 build 文件夹中,我很困惑为什么 IDE 和 gradle 看不到它。
我不确定自己做错了什么。
【问题讨论】:
-
出于好奇 - 您使用的是哪个版本的 Grade 和 intellij?您不再需要添加 sourceSets
-
@Lesiak 我使用的是 eclipse,而不是想法,但在那里提到我分析了更多的解释,甚至是想法。 Gradle 版本是 5.4。
-
把srcDir改成
build/generated/sources/annotationProcessor/java/有帮助吗 -
@Lesiak 感谢您的帮助,但不幸的是没有。已经试过了。如您所述,尝试使用所有组合设置 srcDir -> 基本目录、模型目录、annotationProcessor 目录。也尝试不设置 sourceSet。没有变化。不确定它是如何生成的,但不包括在内。
标签: spring-boot gradle querydsl