2015-11-16 127 views
9

我试图将QueryDSL与Spring Data集成到我现有的项目中,我尝试了不同的示例,现在我决定坚持这个Advanced Spring Data JPA - Specifications and QuerydslSpring 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集成到我的项目?提前致谢!

+0

你有'querydsl-apt'的依赖? –

+0

当然,我会更新帖子与依赖细节 –

+1

你需要'querydsl-jpa'不'querydsl-sql' –

回答

20

我可以做这项工作,而不是采用通过改变依赖如下的com.mysema.query .apt.jpa.JPAAnnotationProcessor和com.querydsl .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 eclip se:eclipse更新Eclipse以包含生成的源代码。

更新:

更换插件的maven-的apt-插件的apt-Maven的插件,并把版本改为1.1.3

+0

谢谢你的例子,完美的作品。注意:为避免像**这样的异常无法加载实体类[NoClassDefFoundError:com/querydsl/core/types/dsl/EntityPathBase] **,使用root ** $ { project.build.directory}/generated-sources **而不是生成源中的子目录。 – Chavjoh