сгенерированный querydsl q исходный код неправильно импортирован - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь добавить 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 генерируется в соответствии с образцом модели и располагается в

/ сборки / генерироваться / источники / annotationProcessor / Java / главная / ком / приготовительный / WS / модель / QSample.java.

Поскольку это находится в папке сборки, я запутался, почему это не видно для IDE и gradle.

Я не уверен, что я делаю неправильно.

1 Ответ

0 голосов
/ 30 апреля 2019

После многих попыток мне удалось, что 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 не работает.

...