Home
Java
Intellij에서 QueryDSL 오류 (cannot find symbol Q class)
devfoxstar
devfoxstar
October 29, 2021
1 min

Table Of Contents

01
Gradle 설정 확인
02
Annotation 설정 확인
03
QueryDSL 초기화
04
IntelliJ 빌드 설정
05
IntelliJ 캐쉬 초기화
06
마무리

Spring Boot 프로젝트에서 Spring Data JPA를 사용할때 한 번쯤 볼수있는 오류입니다.

참고로 JPA에서 쿼리를 작성하는 방법은 쿼리메소드, @Query, QueryDSL이 있습니다.
이중에서 확장성 있는 쿼리를 작성할 때는 QueryDSL이 필수입니다.

QueryDSL을 사용하기 위해서는 Entity 클래스Q도메인 클래스로 변환해야 합니다.
물론 변환은 빌드 설정을 통해 자동으로 이루어집니다.

정상적으로 빌드가 되면 아래와 같이 Q도메인 클래스를 만날 수 있습니다.

Q도메인 클래스
Q도메인 클래스

그런데 Q도메인을 찾지 못하는 오류가 발생합니다.

원인은 여러가지가 있습니다.
Lombok 충돌, 버전 오류, 빌드 설정 오류, 프로젝트 설정 오류, 코드 오류 등

오늘은 그중에서 기본적인 해결 방법을 알아보겠습니다.


Gradle 설정 확인

최신 버전의 Intellij를 사용한다면, build.gradle 설정을 확인해 봅니다.
플러그인을 설치하고 라이브러리를 의존성에 추가해서 빌드 할때 지정 경로에 컴파일하는 설정입니다.

plugins {
    id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}

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

def querydslDir = '$buildDir/generated/querydsl'

querydsl {
    jpa = true
    querydslSourceDir = querydslDir
}

sourceSets {
    main.java.srcDir querydslDir
}

configurations {
    querydsl.extendsFrom compileClasspath
}

compileQuerydsl {
    options.annotationProcessorPath = configurations.querydsl
}

Annotation 설정 확인

Annotation Processing 설정을 확인합니다.
QueryDSL은 Annotation Processor로 컴파일 됩니다.

Settings - Annotation Processors - Enable annotation processing
Settings - Annotation Processors - Enable annotation processing


QueryDSL 초기화

컴파일 과정에서 QueryDSL 오류가 발생하는 경우가 종종 있습니다.
이때는 초기화를 진행합니다.

Gradle querydsl clean And init
Gradle querydsl clean And init


IntelliJ 빌드 설정

Gradle 프로젝트 빌드가 되지 않기 때문에, IntelliJ IDEA로 빌드 설정을 변경합니다.
사실 Gradle 빌드는 로컬 환경에서 느리고 오류가 많습니다.

참고로 IntelliJ 최신 버전 부터는 Gradle 빌드가 기본 설정입니다.
이유는 로컬과 배포 환경을 동일하게 구성하기 위함입니다.

그래도 오류가 나거나 속도가 느리면, 어쩔수 없이 IntelliJ IDEA를 사용해야 합니다.

Settings - Build Tools - Gradle - Build and run using + Run tests using
Settings - Build Tools - Gradle - Build and run using + Run tests using


IntelliJ 캐쉬 초기화

프로젝트 설정 과정에서 문제가 발생하는 경우도 간혹 있습니다.
그래서 IntelliJ 캐쉬를 지우고 다시 시작해도 좋습니다.

File - Invalidate Caches
File - Invalidate Caches


마무리

이제 설정에 문제가 없다면, Gradle Project를 clean하고 다시 build 해줍니다.

Gradle clean And build
Gradle clean And build

빌드가 정상적으로 됐는데, 특정 페이지에서 오류가 발생하는 경우도 있습니다.
이때는 코드 오류를 찾아보면 됩니다.


Tags

#Java#Intellij#Gradle#QueryDSL

Related Posts

Java - Record class (불변 데이터 객체 만들기)
June 11, 2024
1 min
© 2024, All Rights Reserved.

Quick Links

About Me

Media