You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3+Jakarta Persistence+QueryDsl+Gradle无法生成Q类求助

解决Spring Boot 3 + QueryDSL + Gradle Q类生成失败问题

执行./gradlew clean build时无法生成QueryDSL的Q类,报错:

Unable to load class 'jakarta.persistence.Entity'. This is an unexpected error. Please file a bug containing the idea.log file.

问题根源

你的Gradle配置存在两处关键问题:

  1. QueryDSL JPA依赖未指定jakarta分类器,与Spring Boot 3的Jakarta Persistence环境不兼容
  2. 注解处理器依赖引入了旧的Javax版本JPA API,导致无法识别jakarta.persistence.Entity注解

修复方案

修改build.gradle配置如下:

1. 修正依赖配置

def queryDslVersion = '5.0.0'

dependencies {
    // ... 保留原有其他依赖 ...

    // QueryDSL 核心与JPA依赖(添加jakarta分类器)
    implementation("com.querydsl:querydsl-core:${queryDslVersion}")
    implementation("com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta")

    compileOnly 'org.projectlombok:lombok'
    annotationProcessor(
            "com.querydsl:querydsl-apt:${queryDslVersion}:jakarta",
            "jakarta.persistence:jakarta.persistence-api:3.1.0", // 替换旧的javax JPA依赖
            "org.projectlombok:lombok"
    )
}

2. 添加Q类生成路径配置

// 指定注解处理器生成目录
tasks.withType(JavaCompile) {
    options.annotationProcessorGeneratedSourcesDirectory = file("$buildDir/generated/sources/annotationProcessor/java/main")
}

// 让Gradle识别生成的Q类作为源码
sourceSets {
    main {
        java {
            srcDirs += "$buildDir/generated/sources/annotationProcessor/java/main"
        }
    }
}

验证步骤

  1. 执行./gradlew clean compileJava,检查build/generated/sources/annotationProcessor/java/main目录下是否生成对应Q类(如QActivity)
  2. 执行./gradlew clean build,确认报错消失,构建完成

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 02:50:32