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配置存在两处关键问题:
- QueryDSL JPA依赖未指定
jakarta分类器,与Spring Boot 3的Jakarta Persistence环境不兼容 - 注解处理器依赖引入了旧的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" } } }
验证步骤
- 执行
./gradlew clean compileJava,检查build/generated/sources/annotationProcessor/java/main目录下是否生成对应Q类(如QActivity) - 执行
./gradlew clean build,确认报错消失,构建完成
内容的提问来源于stack exchange,提问作者sammubr
相关产品推荐
相关产品推荐

