Java 11 + QueryDSL 4 + Gradle 5 + SpringBoot 2.1- not generating QClasses

随声附和 提交于 2020-07-05 02:45:48

问题


I’m trying to integrate QueryDSL, Gradle and Springboot in versions from title. I added annotationProcessors to gradle but Intellij is still not generating the QClasses. I tried sugesstions from community to use the plugin ‘gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin’ but this did not help.

dependencies{
   annotationProcessor("org.projectlombok:lombok:1.18.4")
   annotationProcessor("com.querydsl:querydsl-apt:4.2.1")
   annotationProcessor("org.springframework.boot:spring-boot-starter-data-jpa:2.1.1.RELEASE")

   compileOnly("org.projectlombok:lombok:1.18.4")
   implementation("com.querydsl:querydsl-jpa:4.2.1")
   implementation("com.querydsl:querydsl-apt:4.2.1:jpa")
   implementation("org.springframework.boot:spring-boot-starter-data-jpa:2.1.1.RELEASE")
   implementation("org.springframework.boot:spring-boot-starter-web:2.1.1.RELEASE")
}

回答1:


I will give you my working configuration :

ext {
    queryDslVersion = '4.2.1'
    lombokVersion = '1.8.6'
}
// https://stackoverflow.com/questions/42441844/annotation-processor-in-intellij-and-gradle/54611475#54611475
compileJava {
    options.annotationProcessorPath = configurations.annotationProcessor
}

dependencies {
  // ...

    compile(
            "com.querydsl:querydsl-core:${queryDslVersion}",
            "com.querydsl:querydsl-jpa:${queryDslVersion}"
    )

    compileOnly "org.projectlombok:lombok:${lombokVersion}"

    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:${lombokVersion}"
}

Using Gradle 5.2+




回答2:


You need to provide concrete annotation processor ':jpa'

annotationProcessor("com.querydsl:querydsl-apt:4.2.1:jpa")

that should work:

dependencies{
   annotationProcessor("org.projectlombok:lombok:1.18.4")
   annotationProcessor("com.querydsl:querydsl-apt:4.2.1:jpa")
   annotationProcessor("org.springframework.boot:spring-boot-starter-data-jpa:2.1.1.RELEASE")

   compileOnly("org.projectlombok:lombok:1.18.4")
   implementation("com.querydsl:querydsl-jpa:4.2.1")
   implementation("org.springframework.boot:spring-boot-starter-data-jpa:2.1.1.RELEASE")
   implementation("org.springframework.boot:spring-boot-starter-web:2.1.1.RELEASE")
}



回答3:


QueryDSL doesn't work with Gradle 5. You can check this other question and the plug-in issues for more information.

It looks like some people managed to get it to work with workarounds such as the ones in the linked question, but that has not been my case. My team had to resort to using HQL in the end.



来源:https://stackoverflow.com/questions/54134455/java-11-querydsl-4-gradle-5-springboot-2-1-not-generating-qclasses

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!