2015-11-16 36 views
9

Sto cercando di integrare QueryDSL nel mio progetto esistente con Spring Data, ho provato diversi campioni e ora ho deciso di attenermi a questo Advanced Spring Data JPA - Specifications and Querydsl.Spring Data JPA - Specifications and Querydsl

Problema: quando si esegue il progetto come Maven generare sorgenti ottengo questo errore

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

Sto aggiungendo questo plugin per il mio pom.xml come il post sul blog indica:

<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> 

e la dipendenza:

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

può puntare a nessuno nella giusta direzione su come risolvere questo problema o come integrare correttamente QueryDSL nel mio progetto? Grazie in anticipo!

+0

Hai 'querydsl-apt' come dipendenza? –

+0

sicuro, aggiornerò il post con il dettaglio delle dipendenze –

+1

hai bisogno di 'querydsl-jpa' non' querydsl-sql' –

risposta

20

Il modo in cui ho potuto fare questo lavoro stava usando il com.querydsl .apt.jpa.JPAAnnotationProcessor al posto del com.mysema.query .apt.jpa.JPAAnnotationProcessor e cambiando le dipendenze come segue:

<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> 

il plugin finire così:

<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> 

ho anche eseguito nella riga di comando ai progetti sradicare mvn ECLIP se: eclipse per aggiornare Eclipse per includere le sorgenti generate.

Aggiornamento:

Sostituito il plugin Maven-apt-plugin per apt-maven-plugin e la versione modificata a 1.1.3

+0

Grazie per il tuo esempio, funziona perfettamente . Nota: per evitare un'eccezione come ** "non è possibile caricare la classe di entità [...] NoClassDefFoundError: com/querydsl/core/types/dsl/EntityPathBase" **, sembra importante utilizzare la root ** $ { project.build.directory}/generated-sources ** e non una sottodirectory nelle sorgenti generate. – Chavjoh