본문 바로가기
Spring/Querydsl

스프링 부트 2.6 이상, Querydsl 5.0 Unable to load class 'com.mysema.codegen.model.Type' 에러 해결하기

by WangTak 2022. 6. 14.
반응형

최근에 한 기업의 과제를 진행하였는데, 주제만 정해주고 기술 스택은 자유였습니다. 그래서 start.spring.io를 통해 최신 버전의 스프링 부트(버전 2.6 이상) 프로젝트를 만들었고, 프로젝트에 Spring Data JPA와 Querydsl을 세팅하였습니다.

 

그런데, 이전에 "Querydsl 시작하기"라는 글을 작성한적이 있는데, 그 방식대로 Querydsl의 의존성을 추가한 이후에 QType Class를 사용하고자 compileQuerydsl을 실행해보니 다음과 같은 에러를 만났습니다.

 

compileQuerydsl 실행 시 만나는 에러

 

※ compileQuerydsl의 실행할 수 있는 위치 및 기본적인 내용은 이전에 작성한 다음 글을 참조해주시기 바랍니다.

 

Querydsl - 시작하기

Spring Data JPA를 사용하는 기업들이 많아지면서 그와 함께 Querydsl을 사용하는 기업들도 자연스럽게 증가했습니다. 오늘은 Querydsl을 사용하기 위한 프로젝트 환경설정 방법과 잘 적용이 됐는지 동

wangtak.tistory.com

 

이전에 작성한 글에서 적용된 Querydsl 라이브러리의 버전은 다음과 같습니다.

querydsl 4.4.0

 

그리고 최근에 만든 스프링 부트 프로젝트에서 적용된 Querydsl 라이브러리의 버전은 다음과 같습니다.

querydsl 5.0.0

 

스프링 부트는 라이브러리의 버전을 따로 명시하지 않으면 알아서 부트의 버전에 맞는 라이브러리 버전을 임포팅하는데 스프링 부트 버전이 지속적으로 업데이트 되면서 그에 맞는 Querydsl의 버전도 5.0.0을 권장하도록 바뀐 거 같습니다. 그래서 저와 같은 상황을 마주한 분들이 있을 까 싶어서 영한님의 Querydsl 강의를 다시 가보니 강의 자료에 "스프링 부트 2.6 이상, Querydsl 5.0 지원 방법"에 대한 내용이 추가 된 것을 확인할 수 있었습니다. 혹여나 제 글을 보고 Querydsl을 시작했는데, 정상적으로 안되는 분들이 있을 까 싶어서 내용을 정리합니다.

 

※ 최신 프로젝트(스프링 부트 2.6 이상)에서 build.gradle의 querydsl 버전을 4.4.0으로 명시해줘도 정상적으로 반영되지 않았습니다.

buildscript {
   ext {
      queryDslVersion = "5.0.0"
   }
}

plugins {
   id 'org.springframework.boot' version '2.6.8'
   id 'io.spring.dependency-management' version '1.0.11.RELEASE'
   // querydsl 추가
   id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
   id 'java'
}

group = 'com.wangtak'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
   compileOnly {
      extendsFrom annotationProcessor
   }
}

repositories {
   mavenCentral()
}

dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
   implementation 'org.springframework.boot:spring-boot-starter-web'

   //querydsl 추가
   implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
   annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}"

   compileOnly 'org.projectlombok:lombok'
   developmentOnly 'org.springframework.boot:spring-boot-devtools'
   annotationProcessor 'org.projectlombok:lombok'
   testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
   useJUnitPlatform()
}

// querydsl 세팅 시작
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
   jpa = true
   querydslSourcesDir = querydslDir
}
sourceSets {
   main.java.srcDir querydslDir
}
configurations {
   querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
   options.annotationProcessorPath = configurations.querydsl
}
// querydsl 세팅 끝

 

위 처럼 querydsl의 버전을 명시해야하고, querydsl-jpa, querydsl-apt를 추가해줘야 합니다. 다시금 IT는 변화가 빠르고 이런 변화를 따라가기 위해서는 꾸준히 공부해야 하는 것을 느꼈습니다.

 

 

반응형

'Spring > Querydsl' 카테고리의 다른 글

Querydsl - 시작하기  (0) 2021.12.21