You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Spring Boot项目QueryDSL Q类执行mvn install后未生成问题求助

解决QueryDSL Q类未生成的问题

我之前也碰到过类似的坑,帮你梳理几个排查和解决的关键步骤:

1. 先把Maven配置拉满(核心关键)

QueryDSL的Q类是靠注解处理器(APT)生成的,所以pom.xml里必须把依赖和插件配置到位:

依赖部分

<!-- QueryDSL JPA核心依赖 -->
<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-jpa</artifactId>
    <version>4.4.0</version> <!-- 注意版本兼容:Spring Boot 2.x对应4.x,1.x对应3.x -->
</dependency>
<!-- APT注解处理器,必须加provided scope -->
<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-apt</artifactId>
    <version>4.4.0</version>
    <scope>provided</scope>
</dependency>

APT插件配置

一定要在build插件里配置APT处理器,否则Maven编译时不会触发Q类生成:

<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>
                        <!-- JPA场景必须用这个处理器 -->
                        <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                        <!-- Q类生成目录,默认是target/generated-sources/java -->
                        <outputDirectory>target/generated-sources/java</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2. 检查实体类的注解是否合规

你的Application实体必须标注@javax.persistence.Entity注解,QueryDSL只给带这个注解的类生成Q类。比如实体类开头得是这样:

package biz.picosoft.entities;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity; // 这个注解绝对不能漏!
import javax.persistence.Id;

@Entity
public class Application implements Serializable {
    @Id
    private Long id;
    @Column(name = "create_date")
    private Date createDate;
    // ...其他字段和方法
}

3. 给Eclipse Neon开启APT支持

Eclipse默认没开注解处理,得手动配置:

  • 右键项目 → PropertiesJava CompilerAnnotation Processing
  • 勾选Enable annotation processing
  • 切换到Factory Path标签,点击Add External JARs,找到本地Maven仓库里的querydsl-apt-xxx.jarquerydsl-jpa-xxx.jar
  • 点击Apply and Close,然后执行Project → Clean...清理项目

4. 调整Maven构建命令试试

有时候mvn install可能因为缓存或者前置阶段问题没触发APT,先执行:

mvn clean compile

先清掉旧的构建产物,再单独执行编译,APT处理器会在compile阶段运行,Q类会生成到target/generated-sources/java目录下。

5. 让Eclipse识别生成的源码目录

如果Q类已经生成但Eclipse没识别到:

  • 右键项目 → Build PathConfigure Build Path
  • Source标签下,点击Add Folder,选中target/generated-sources/java,确认后Eclipse就会把这个目录当成源码目录,Q类就能正常引用了。

按这些步骤一步步排查,应该就能解决Q类不生成的问题啦!

内容的提问来源于stack exchange,提问作者fatma pico

火山引擎 最新活动