[QueryDSL] can not resolve Q...

박해인·2024년 9월 16일
0

Error

목록 보기
7/16

https://velog.io/@kgy30002/Querydsl-Q%ED%8C%8C%EC%9D%BC-%EC%83%9D%EC%84%B1%ED%95%98%EB%8A%94-%EB%B2%95-3.XX

ㄴ 선생님 감사합니다 ㅜ

문제상황

QueryDSL을 implement 했지만
계속해서 Q클래스가 생성되지 않았던 문제!!

annotation processor란?

  • Java에서 애노테이션을 처리하고, 그 결과로 추가적인 소스 코드를 자동으로 생성하는 도구
  • 주로 컴파일 타임에 어노테이션을 분석하고, 해당 어노테이션에 따라 필요한 코드를 생성하는 데 사용됨.

Querydsl에서의 annotation processor 역할

  • Querydsl은 엔티티 클래스에 붙은 JPA 관련 애노테이션을 분석하여 Q 클래스를 자동으로 생성함.
  • annotation processor가 Querydsl의 핵심 역할을 하며, 엔티티 클래스에서 필요한 Q 클래스를 컴파일 시 자동으로 생성하는 작업을 담당함.

1. AnnotationProcessor 설정하기
File > Settings > Build/Excution/Deployment > copiler > AnnotationProcessors

2.build.gradle 설정
참고로 $buildDir build를 뜻한다.

def querydslDir = "$buildDir/generated/querydsl"

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

dependencies

// QueryDSL
	implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
	annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" // 수정
	annotationProcessor "jakarta.annotation:jakarta.annotation-api"
	annotationProcessor "jakarta.persistence:jakarta.persistence-api"

configuration

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

plugins

id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"

⚡ gradle창에서 compileQuerydsl 클릭해주기

결과


성공적으로 생긴 Q클래스들 짜릿하다

profile
갓생살고싶어라

0개의 댓글