2017-08-21 2 views
0

J'essaie d'utiliser QueryDSL dans mon projet eclipse maven. Ce sont les dépendances.Demande de classes de type QL QL non générées

<properties> 
     <!-- The main class to start by executing java -jar --> 
     <start-class>my.app.market.DBApp</start-class> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
     <querydsl.version>4.1.4</querydsl.version> 
     <apt-maven-plugin.version>1.1.3</apt-maven-plugin.version> 

</properties> 

<dependency> 
      <groupId>com.querydsl</groupId> 
      <artifactId>querydsl-apt</artifactId> 
      <version>4.1.4</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.querydsl</groupId> 
      <artifactId>querydsl-jpa</artifactId> 
      <version>4.1.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.6.1</version> 
     </dependency> 

<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</outputDirectory> 
          <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

Après cela, j'essaie d'écrire les requêtes.

@Repository 
public class QueryDSLRepo { 

    @PersistenceContext 
    private EntityManager em; 

    public ReportingParamDAO save(final ReportingParamDAO reportingParamDAO) { 
     em.persist(reportingParamDAO); 
     return reportingParamDAO; 
    } 

    public List<ReportingParamDAO> findreportingParamDAOsByIdQueryDSL(final Integer id) { 
     final JPAQuery<ReportingParamDAO> query = new JPAQuery<>(em); 
     final QReportingParamDAO reportingParamDAO = QReportingParamDAO.reportingParamDAO; 

     return query.from(reportingParamDAO).where(reportingParamDAO.id.eq(id)).fetch(); 
    } 


} 

Mais je reçois l'erreur

QReportingParamDAO cannot be resolved to a type 

Note: ReportingParamDAO est une classe d'entité.

Cela signifie que la classe de type Q pour mon DAO n'est pas générée. Je ne sais pas pourquoi cela n'a pas été généré. Ai-je besoin de faire autre chose? Je suis tombé sur this mais l'utilisateur travaille sur IntelliJ et je n'arrive pas à le faire fonctionner dans mon cas. Quelqu'un peut-il m'aider s'il vous plaît. Merci !!

+0

Avez-vous essayé le débogage via la sortie de débogage maven comme 'mvn -X install' propre. Cela vous donnera de meilleures informations sur ce qui se passe dans ce plugin. Si possible, pouvez-vous poster la sortie de la console pertinente pour ce plugin? – yaswanth

+0

@yaswanth Merci pour la réponse. Sans utiliser le QReportingParamDAO dans la classe, quand je fais l'installation propre de mvn -X je n'obtiens aucune erreur. – varunkr

Répondre

1

J'ai testé avec votre fichier pom.xml. Les classes Q ont été générées pour moi mais je n'ai pas pu y accéder depuis mon code source. Le problème est que les sources générées ne sont pas sur classpath par défaut. Ajoutez-le sur le classpath et vous pourrez les utiliser dans votre code source.

  1. Vérifiez le répertoire target/generated-sources pour voir si les classes sont réellement là. (Vous devriez pouvoir les trouver parce que j'ai testé avec votre pom.xml)
  2. Si vous ajoutez target/generated-sources à classpath, votre application fonctionnera. Mais je ne pense pas que ce soit une bonne idée. Parce que tous les fichiers du classpath seront indexés par l'IDE et votre IDE sera plus lent. Tous les fichiers du dossier généré-sources n'ont pas besoin d'être indexés. Alors ajoutez target/generated-sources/java à classpath et changer votre plugin requête dsl classe Q générée à target/generated-sources/java
+0

Hey oui ils sont dans target/generated-sources Je vais essayer votre méthode et commenter. – varunkr

+0

Vous êtes un sauveteur, mec. cela a fonctionné. Merci beaucoup !! – varunkr

+0

Pourriez-vous expliquer les trucs de la classe. Pourquoi exactement cela n'a pas fonctionné plus tôt? Cela serait utile. Merci !! – varunkr