使用带有Spring Boot,Gradle和Idea的querydsl时,QClasses中的未解析符号

时间:2018-04-10 15:31:02

标签: java spring-boot gradle intellij-idea querydsl

我正在尝试使用querydsl构建一个带弹簧启动的API。我已设法使用Gradle插件生成QClasses,但我无法将这些类作为QClasses使用,因为它们的所有导入都是未解析的。我附上相关文件和截图,看看事情的样子。

plugins {
    id "java"
    id "eclipse"
    id "idea"
    id "org.springframework.boot" version "2.0.1.RELEASE"
    id "io.spring.dependency-management" version "1.0.5.RELEASE"
    id "com.ewerk.gradle.plugins.querydsl" version "1.0.9"
}

querydsl {
    querydslDefault = true
    jpa = true
}

idea {
    module {
        sourceDirs += file('src/querydsl/')
        generatedSourceDirs += file('src/querydsl/')
    }
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
    compile('org.springframework.boot:spring-boot-starter-data-rest')
    compile "com.querydsl:querydsl-jpa:4.1.3"
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

这会产生像这样的QClasses

Project

正如您所看到的,一个小问题是我无法再将树打开到querydsl模块。如果删除sourceDirs += file('src/querydsl/'),我可以打开树。我不知道这是否有意。

我的存储库类是这样的

public interface BotRepository extends PagingAndSortingRepository<Bot, UUID>, QuerydslPredicateExecutor<Bot>, QuerydslBinderCustomizer<QBot> {
}

但我在IntelliJ中得到了这个 enter image description here

这告诉我项目模块设置有问题,即使我在Gradle中添加了源代码。点击Add dependency on module后,我可以导入该课程。但话说回来,我得到一个错误 enter image description here

我很确定发生了这个错误,因为QClass无法解析导入。这是它的外观 enter image description here

这就是我被困的地方。我无法继续使用API​​。任何帮助将不胜感激。

P.S。:我知道有答案显示如何设置gradle并且我使用这些设置并决定使用querydsl gradle插件。所以,我不希望删除插件并转向其他方式(阅读:querydsl-apt:jpa)

1 个答案:

答案 0 :(得分:0)

我在Eclipse上运行Gradle + Spring Boot + QueryDSL时遇到了一些问题。但是,我注意到了一些重点:

1)在我的笔记本上,它从eclipse

中正确运行为Java Application或Spring Boot App

2)在我的桌面上,以Java Application

运行

3)在我的桌面上,它作为Spring Boot App正确运行

4)在我的桌面上,它使用命令行正确运行:gradle bootRun

我仍然对第一次观察感到好奇......

无论如何,请找到我使用的build.gradle。我希望它有所帮助...

plugins {
         id 'org.springframework.boot' version '1.5.8.RELEASE'
         id 'com.ewerk.gradle.plugins.querydsl' version '1.0.9'
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

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

ext {
     querydslVersion = '4.1.4'
}

wrapper {
         gradleVersion = '4.3.1'
}

repositories {
              mavenCentral()
              maven { url "https://plugins.gradle.org/m2/" }
}

dependencies {
              compile('org.springframework.boot:spring-boot-starter')
              compile('org.springframework.boot:spring-boot-starter-actuator')
              compile('org.springframework.boot:spring-boot-starter-data-mongodb')
              compile('org.springframework.boot:spring-boot-starter-thymeleaf')
              compile('org.springframework.boot:spring-boot-starter-web')

              compile("com.querydsl:querydsl-mongodb:$querydslVersion")

              testCompile('org.springframework.boot:spring-boot-starter-test')
}

querydsl {
          springDataMongo = true
          querydslSourcesDir = 'src/generated-sources/java'
          library = "com.querydsl:querydsl-apt:$querydslVersion"
         }