Spring Boot 3.1로 바꾼 뒤 Querydsl Q 타입 컴파일 오류
버전을 바꾸고 Q 타입 생성이 막혔습니다
이전 프로젝트에서는 Querydsl의 Q 타입을 컴파일하는 데 문제가 없었습니다. Spring Boot를 2.7.x에서 3.1.x로 바꾼 프로젝트에서는 javax.persistence.entity 관련 오류가 발생했습니다.
javax.persistence.entity는 오류를 짧게 적어 둔 표현이며 정확한 예외명이나 클래스명은 아닙니다.
두 의존성에 jakarta를 붙였습니다
당시 build.gradle의 dependencies에 적힌 Querydsl 의존성은 다음과 같았습니다.
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}"두 선언의 끝에 :jakarta를 붙이니 Q 타입을 생성할 수 있었습니다.
Querydsl 5.0 릴리스 노트는 Jakarta EE 지원을 jakarta 분류자(classifier)로 제공한다고 설명합니다. 의존성 이름 뒤에 붙인 :jakarta라는 문자열은 Jakarta용 산출물을 선택하는 표기입니다.
이때는 모든 Querydsl 의존성에 붙이면 된다고 생각했습니다. 하지만 여기서 바꾼 것은 아래 두 선언뿐입니다. 다른 의존성까지 무조건 붙이는 규칙은 아닙니다. 전체 설정을 마치려면 queryDslVersion의 값과 나머지 빌드 설정을 이 두 줄과 별도로 지정해야 합니다.
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta"
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}:jakarta"