Spring Data JPA - 规范和Querydsl

时间:2015-11-16 17:38:45

标签: spring maven jpa querydsl

我正在尝试使用Spring Data将QueryDSL集成到我现有的项目中,我尝试了不同的样本,现在我决定坚持使用Advanced Spring Data JPA - Specifications and Querydsl

问题:当我将项目作为Maven生成源运行时,我收到此错误

error: Annotation processor 'com.mysema.query.apt.jpa.JPAAnnotationProcessor' not found

我正在将此插件添加到我的pom.xml中,因为博客帖子显示:

<plugin>
  <groupId>com.mysema.maven</groupId>
  <artifactId>maven-apt-plugin</artifactId>
  <version>1.0</version>
  <executions>
    <execution>
      <phase>generate-sources</phase>
      <goals>
        <goal>process</goal>
      </goals>
      <configuration>
        <outputDirectory>target/generated-sources</outputDirectory>
        <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
      </configuration>
    </execution>
  </executions>
</plugin>

和依赖:

<dependency>
     <groupId>com.mysema.querydsl</groupId>
     <artifactId>querydsl-sql</artifactId>
     <version>3.6.9</version>
</dependency>

有人能指出我正确的方向如何解决这个问题或如何将QueryDSL正确地集成到我的项目中?提前谢谢!

2 个答案:

答案 0 :(得分:36)

我的工作方式是使用 com.querydsl .apt.jpa.JPAAnnotationProcessor而不是 com.mysema.query .apt.jpa.JPAAnnotationProcessor并通过以下方式更改依赖关系:

<dependency>
  <groupId>com.querydsl</groupId>
  <artifactId>querydsl-apt</artifactId>
  <version>4.0.6</version>
</dependency>
<dependency>
  <groupId>com.querydsl</groupId>
  <artifactId>querydsl-jpa</artifactId>
  <version>4.0.6</version>
</dependency>

插件最终会像这样:

<plugin>
  <groupId>com.mysema.maven</groupId>
  <artifactId>apt-maven-plugin</artifactId>
  <version>1.1.3</version>
  <executions>
    <execution>
      <phase>generate-sources</phase>
      <goals>
        <goal>process</goal>
      </goals>
      <configuration>
        <outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
         <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
      </configuration>
    </execution>
  </executions>
</plugin>

我还在项目根目录 mvn eclipse:eclipse 的命令行中执行,以更新Eclipse以包含生成的源。

<强>更新

替换了apt-maven-plugin的插件maven-apt-plugin,并将版本更改为1.1.3

答案 1 :(得分:0)

无需显式配置 apt-maven-plugin,只需将以下依赖项添加到项目(注意 jpa 分类器):

<dependency>
  <groupId>com.querydsl</groupId>
  <artifactId>querydsl-apt</artifactId>
  <version>${querydsl.version}</version>
  <classifier>jpa</classifier>
</dependency>

此外,如果您想要比 QuerydslPredicateExecutor 提供的功能更多的 Querydsl 功能,请查看 https://github.com/infobip/infobip-spring-data-querydsl#JPA

相关问题