无法为 jakarta 持久性实体配置 Querydsl

问题描述 投票:0回答:1

构建.gradle

plugins {
...
    id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}

apply plugin: 'org.liquibase.gradle'
apply plugin: 'com.ewerk.gradle.plugins.querydsl'
def queryDslSourceDirectory = 'src/querydsl/java/generated'
...
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    ...
    implementation 'com.querydsl:querydsl-core:5.1.0'
    implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta'
    implementation 'com.querydsl:querydsl-apt:5.1.0:jakarta'
    annotationProcessor 'com.querydsl:querydsl-apt:5.1.0:jakarta'
    ...
}
...
querydsl {
    jpa = true
    querydslSourcesDir = queryDslSourceDirectory
}

sourceSets {
    main {
        java {
            srcDir queryDslSourceDirectory
        }
    }
}

compileQuerydsl {
    options.annotationProcessorPath = configurations.querydsl
}
configurations {
    querydsl.extendsFrom compileClasspath
}

基本详细信息.java

...
import jakarta.persistence.*;
...
@Entity
public class BasicDetails {...}

错误日志: 失败:构建失败并出现异常。

  • 出了什么问题: 任务“:compileQuerydsl”执行失败。

java.lang.NoClassDefFoundError:javax/persistence/Entity

Querydsl 不应该查找 javax.persistence.Entity 因为我已经配置了 querydsl 的 jakarta 分类器而不是常规分类器。 我还将 querydsl 的版本降低到 5.0.0 和 4.4.0,但它抛出了相同的错误。

java gradle querydsl
1个回答
0
投票

花了几个小时尝试让它工作(我发现的大多数示例要么使用 Maven,要么使用现在不支持的 querydsl gradle 插件),我发现这个问题,结果证明这是关键。

为了简洁起见,以下是我的

build.gradle.kts
的部分内容,它们使我能够正常生成 querysdl 代码。

val jakartaPersistenceApiVersion = "3.1.0"
val queryDslVersion = "5.1.0"

dependencies {
  // QueryDSL
  implementation("com.querydsl:querydsl-core:${queryDslVersion}")
  implementation("com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta")
  annotationProcessor("com.querydsl:querydsl-apt:${queryDslVersion}:jakarta")
  annotationProcessor("jakarta.persistence:jakarta.persistence-api:${jakartaPersistenceApiVersion}")
}
© www.soinside.com 2019 - 2024. All rights reserved.