我正在尝试在我的eclipse maven项目中使用QueryDSL。这些是依赖项。
<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>
在此之后我尝试编写查询。
@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();
}
}
但是我收到了错误
QReportingParamDAO cannot be resolved to a type
注意:ReportingParamDAO
是一个实体类。
这意味着我的DAO的Q类型没有生成。我不确定为什么它没有生成。我还需要做点什么吗?我发现了this帖子,但用户正在处理IntelliJ
,而我似乎无法在我的案例中使其发挥作用。有人可以帮帮我吗。谢谢!!
答案 0 :(得分:5)
我已经使用你的pom.xml进行了测试。 Q类是为我生成的,但我无法从源代码中访问它们。问题是默认情况下生成的源不在类路径上。在类路径中添加它,您就可以在源代码中使用它们。
target/generated-sources/java
添加到类路径并将您的query-dsl插件更改为生成的Q类为target/generated-sources/java
答案 1 :(得分:1)
我最近也遇到了同样的问题。
似乎apt-maven-plugin不喜欢空的.java文件。 如果您的项目中有一个,他将不会生成任何类,而不会指示空文件。
很难找到谁。
答案 2 :(得分:1)
就我而言,导致错误的原因是 Java 14 中的 """ multiline string """
语法(预览功能)。
我是在 mvn clean compile -e
之前发现的。