簡體   English   中英

Querydsl mongodb gradle springboot 問題

[英]Querydsl mongodb gradle springboot issue

我試圖在我的項目中使用 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 集成。 查詢dsl文件鏈接

<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集成嗎? 如果是,請提供解決方案。

看看querydsl-with-gradle-and-idea使用Gradle為Spring Data和MongoDB配置QueryDSL

他們使用:

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

github corneil的spring-data-demo的完整示例,詳細信息如下: 帶有Spring和gradle的Mongo的QueryDSL

對我來說,本文添加了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文件。

這就是 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 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM