2015-11-16 125 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