【问题标题】:Querydsl mongodb gradle springboot issueQuerydsl mongodb gradle springboot问题
【发布时间】:2017-01-18 08:36:07
【问题描述】:

我正在尝试在我的项目中使用 querydsl,就像在 spring boot 文档中描述的那样, springboot-mongodb-look at 5.3.4 这样我就可以做到了,

QPerson person = new QPerson("person");
List<Person> result = repository.findAll(person.address.zipCode.eq("C0123"));

Page<Person> page = repository.findAll(person.lastname.contains("a"), 
                                       new PageRequest(0, 2, Direction.ASC, "lastname"));

我正在使用 gradle build 和 mongodb 作为数据库。

我的问题是,在 querydsl 文档中,只提供了 maven 集成。 querydsl document link

<dependency>
  <groupId>com.querydsl</groupId>
  <artifactId>querydsl-apt</artifactId>
  <version>${querydsl.version}</version>
  <scope>provided</scope>
</dependency>

<dependency>
  <groupId>com.querydsl</groupId>
  <artifactId>querydsl-mongodb</artifactId>
  <version>${querydsl.version}</version>
</dependency>

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.6.1</version>
</dependency>

现在,配置生成 Querydsl 使用的查询类型的 Maven APT 插件:

<project>
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>com.mysema.maven</groupId>
        <artifactId>apt-maven-plugin</artifactId>
        <version>1.1.3</version>
        <executions>
          <execution>
            <goals>
              <goal>process</goal>
            </goals>
            <configuration>
              <outputDirectory>target/generated-sources/java</outputDirectory>
              <processor>com.querydsl.apt.morphia.MorphiaAnnotationProcessor</processor>
            </configuration>
          </execution>
        </executions>
      </plugin>
    ...
    </plugins>
  </build>
</project>

这可以使用 gradle 集成吗?如果是,请提供解决方案。

【问题讨论】:

    标签: java mongodb gradle spring-boot querydsl


    【解决方案1】:

    看看querydsl-with-gradle-and-ideaConfiguring QueryDSL for Spring Data and MongoDB with Gradle

    他们使用:

    compile "com.mysema.querydsl:querydsl-apt:3.6.3:jpa"
    compile "com.querydsl.apt:querydsl-mongodb:4.0.9"
    

    github corneil's spring-data-demo 的完整示例,详细在这里:QueryDSL for Mongo with Spring and gradle

    【讨论】:

      【解决方案2】:

      对我来说帮助这篇文章add Querydslsupport

      接下来添加到你的 gradle 文件中:

      buildscript {
          repositories {
              jcenter()
          }
          dependencies {
              classpath "gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.9"
          }
      }
      
      apply plugin: 'com.ewerk.gradle.plugins.querydsl'
      
      sourceSets {
          main {
              java {
                  srcDir "$buildDir/generated/source/app/main"
              }
          }
      }
      
      dependencies {
          compile "com.querydsl:querydsl-mongodb:4.1.4"
          compileOnly "com.querydsl:querydsl-apt:4.1.4"
      }
      
      querydsl {
          springDataMongo = true
          querydslSourcesDir = "$buildDir/generated/source/app/main"
      }
      

      之后,您应该将 @Document 注释添加到您的实体类并构建。您将在 querydslSourcesDir 中指定的文件夹下看到生成的 Q 文件。

      【讨论】:

        【解决方案3】:

        这就是 QueryDSL MongoDB 4.4.0 和 Gradle 7 对我有用的地方。

        1. 将以下依赖项添加到您的 build.gradle 文件中。

          implementation "com.querydsl:querydsl-mongodb:4.4.0"
          annotationProcessor("com.querydsl:querydsl-apt:4.4.0:general", "javax.annotation:javax.annotation-api")
          

          注意:我们需要 javax.annotation:javax.annotation-api 以便 APT 处理器可以理解您的域类中的 @NotNull 等。

        2. 使用com.querydsl.core.annotations 包中的@QueryEntity 注释(来自上面的第一个依赖项)注释您的域类。

        让 Gradle 发挥它的魔力,你会看到 QClasses 。

        【讨论】:

          猜你喜欢
          • 2022-01-13
          • 2023-04-08
          • 2020-10-12
          • 1970-01-01
          • 2016-12-13
          • 2022-10-09
          • 2014-05-11
          • 2020-04-22
          • 2019-05-23
          相关资源
          最近更新 更多