Сгенерированный querydsl q исходный код импортируется неправильно

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

/build/generated/sources/annotationProcessor/java/main/com/prep/ws/model/QSample.java.

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

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

Из любопытства - какую версию класса и интеллиджа вы используете? Вам больше не нужно добавлять sourceSets

Lesiak 26.04.2019 19:15

@Lesiak Я использую eclipse, а не идею, но упомянул там, что я проанализировал больше объяснений, даже для идеи. Версия Gradle 5.4.

Bosko Mijin 26.04.2019 20:18

Это поможет, если вы измените srcDir на build/generated/sources/annotationProcessor/java/

Lesiak 26.04.2019 21:28

@Lesiak Спасибо за помощь, но, к сожалению, нет. Уже попробовал. Пробовал со всеми комбинациями для установки srcDir -> базовый каталог, каталог модели, каталог annotationProcessor, как вы упомянули. Также пробовал без установки sourceSet. Без изменений. Не уверен, как он генерируется, но не включается.

Bosko Mijin 26.04.2019 21:37
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
2
4
1 773
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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. идеально

keesjanbertus 11.06.2021 15:53

Подтверждено, что это все еще работает в холодный зимний день 2021 года. Спасибо!

Zargontapel 10.12.2021 12:50

Другие вопросы по теме