queryDsl on java21 and SpringBoot 3.2version

한윤재·2024년 4월 28일

Gradle-kotlin 기반 설정방법

  val queryDslVersion = "6.0"
    implementation("io.github.openfeign.querydsl:querydsl-core:$queryDslVersion")
    implementation("io.github.openfeign.querydsl:querydsl-jpa:$queryDslVersion")
    annotationProcessor("io.github.openfeign.querydsl:querydsl-apt:$queryDslVersion:jpa")
    annotationProcessor("jakarta.annotation:jakarta.annotation-api")
    annotationProcessor("jakarta.persistence:jakarta.persistence-api")
    

플러그인은 필요하지 않습니다. 어노테이션 프로세서를 이용한 방식입니다.
자바21과 스프링 부트 3.2 환경에서는 queryDsl 6.0 버전을 사용할때 정상적으로 Q클래스가 생성되는 것을 확인했습니다.

추가설정

위와같은 설정만으로 충분히 queryDsl을 사용하실 수 있습니다. 다음의 설정은 그레이들 빌드시 자바파일로 추가적으로 q클래스를 생성해주기 위한 옵션입니다.

빌드된 폴더 외에 src 폴더 아래에서 q클래스가 생성되는 것을 확인할 수 있습니다. 그레이들 클린시 해당 generated 폴더가 함께 삭제되도록 구성했습니다.

val querydslDir = "src/main/generated"

sourceSets {
    getByName("main").java.srcDirs(querydslDir)
}
tasks.withType<JavaCompile> {
    options.generatedSourceOutputDirectory.set(file(querydslDir))
}

tasks.named("clean") {
    doLast {
        file(querydslDir).deleteRecursively()
    }
}

build.gradle.kts

다음과 같이 작성하시면 됩니다.

1개의 댓글

comment-user-thumbnail
2025년 4월 14일

최근
implementation "com.querydsl:querydsl-jpa:5.0.0"
annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jpa"
annotationProcessor 'jakarta.persistence:jakarta.persistence-api:2.2.3'
위 세개의 의존성 추가 후 별도의 설정이 없어도 q클래스가 생성되는 것을 확인

답글 달기