querydsl生成的q源码没有正确导入
Posted
技术标签:
【中文标题】querydsl生成的q源码没有正确导入【英文标题】:querydsl generated q source code is not imported correctly 【发布时间】: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。没有变化。不确定它是如何生成的,但不包括在内。
【参考方案1】:
经过多次尝试,我已经管理了该 querydsl 的工作(并且运行良好)。如果其他人有同样的问题,我会发布这个答案。就我而言,我不得不将 sourceSet 更改为直接指向 annotationProcessor/java/main。之后一切都按预期工作。
sourceSets.main.java.srcDirs = ['build/generated/sources/annotationProcessor/java/main','src/main/java']
指向build/generated
、build/generated/sources/annotationProcessor
或build/generated/sources/annotationProcessor/java
不起作用。
【讨论】:
我爱你发布这个。无需插件即可工作,适用于 Eclipse 和 IntelliJ。完美 确认这在 2021 年寒冷的冬日仍然有效。谢谢!以上是关于querydsl生成的q源码没有正确导入的主要内容,如果未能解决你的问题,请参考以下文章