들어가기 전

스프링 부트 2.6 이상 버전에서는 2.6 이하 버전에서 설정한 부분에 조금 추가를 하셔야 정상적으로 동작합니다.

필자는 스프링 부트 버전 2.7 Gradle 버전 7.4.1을 기준으로 설정을 하였습니다.

 

 

스프링 부트 2.6 이하 버전

먼저 스프링 부트 2.6이하 버전에서 querydsl 설정을 알아보겠습니다.

 

build.gradle

plugins {

    // querydsl 추가
    id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"

}

dependencies {
    implementation 'com.querydsl:querydsl-jpa'
}

//querydsl 추가
def querydslDir = "$buildDir/generated/querydsl"

querydsl {
    jpa = true
    querydslSourcesDir = querydslDir
}
sourceSets {
    main.java.srcDir querydslDir
}
compileQuerydsl {
    options.annotationProcessorPath = configurations.querydsl
}
configurations {
    querydsl.extendsFrom compileClasspath
}

 

위와 같이 build.gradle에 설정을 추가합니다.

추가를 한뒤 Gradle에서 Tasks를 클릭 후 compileQuerydsl을 더블클릭하여 실행해 줍니다.

 

그 후에 build.gradle에서 설정 해준 querydslDir 경로에 확인해줍니다. 이때 생성되는  패키지 경로는 /src/main/패키지/엔티티. java와 동일하게 생성됩니다. 대신  querydslDir의 경로에는 엔티티.java가 아닌 Q엔티티. java가 생성이 됩니다. 

 

위의 사진처럼 만들어졌으면 querydsl 설정은 성공적으로 되었습니다.

 

 

스프링 부트 2.6이상 버전

2.6 이하 버전과 동일하게 querydsl을 설정할 경우 아래와 같은 메시지와 함께 querydsl설정에 실패가 됩니다.

 

Unable to load class 'com.mysema.codegen.model.Type'.

This is an unexpected error. Please file a bug containing the idea.log file.

 

이거에 대한 해결방법은 2.6 이하 버전 설정에 몇 가지 추가 및 수정을 해주면 해결됩니다.

 

buildscript {
    ext {
        querydslVersion ="5.0.0"
    }
}

plugins {
    // querydsl 추가
    id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
    

}

dependencies {
    // querydsl 추가
    implementation 'com.querydsl:querydsl-jpa:5.0.0'
    implementation 'com.querydsl:querydsl-apt:5.0.0'
   
}

//querydsl 추가
def querydslDir = "$buildDir/generated/querydsl"

querydsl {
    jpa = true
    querydslSourcesDir = querydslDir
}
sourceSets {
    main.java.srcDir querydslDir
}
compileQuerydsl {
    options.annotationProcessorPath = configurations.querydsl
}
configurations {
    querydsl.extendsFrom compileClasspath
}

 

위와 같이 build.gradle에 설정을 해주면 2.6 이상 버전에서 querydsl 설정을 성공적으로 할 수 있습니다.