SpringBoot 3.0.X QueryDsl 설정

duckbill413·2023년 2월 25일
0

Spring JPA

목록 보기
6/7
post-thumbnail

QueryDsl 사용을 위한 설정

2023-05-04 수정


QueryDsl을 사용하기에 앞서 build.gradle을 설정하는데에 오류가 발생하였다. Spring boot 3.0.x 로 버전이 올라가면서 설정 방법이 달라져 발생하는 오류이다.


실행 환경

  • Spring boot 3.0.3
  • Java 17

build.gradle 파일

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.0.3'
    id 'io.spring.dependency-management' version '1.1.0'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
        // QueryDsl 설정
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

tasks.named('test') {
    useJUnitPlatform()
}
clean {
    delete file('src/main/generated')
}

참고

  • javaxjakarta로 옮겨 갔으므로
    Unable to load class 'javax.persistence.Entity' 에러를 피하기 위해서는
    jakarta로 종속성을 넣어주어야 한다.
  • spring boot 3.0.x가 되면서 Querydsl로 생성되는 클래스가 경로로 지정된({project-name}/src/main/generated)에 생기게 되어 깔끔하다.
  • QueryDsl 클래스 생성은 compileQuerydsl로 가능하다.

    생성된 QueryDsl 클래스를 확인할 수 있다.

Querydsl 프로젝트 실행

  • Gradle을 이용해서 실행을 하는데 Attempt to recreate a file for type {Qfile} Error가 계속 발생하였다.
  • Gradle 빌드시에 Querydsl 클래스 파일의 경로를 전달받지 못해서 생기는 문제인 것 같은데 정확한 해결법은 찾지 못하였다.
  • 임시적으로 Setting의 Gradle 설정을 intellij 빌드로 바꾸어서 실행이 가능하다.
profile
같이 공부합시다~

0개의 댓글