반응형

querydsl 설정은 완벽!! 했는데도 이상하게 inteliJ에서 querydsl cannot find symbol와 같은 에러가 발생하는 경우가 있습니다.
이에 대해 설명해 보겠습니다.

querydsl cannot find symbol


querydsl과 관련된 파일에 대해 querydsl cannot find symbol이란 에러가 발생할 경우 이유는 세 가지가 있습니다.

  1. Q클래스가 제대로 생성이 되지 않았기 때문이기 때문에 재생성 해주면 됩니다.
    아래와 같이 compileQeurydsl을 재실행 하면 재생성 됩니다.

  2. AnnotationProcess 설정 문제. 원인은 모르겠음.
    GradleImport에 있는 것을 전부 Default로 이동.

  3. Source Folder에 querydsl 디렉토리가 연동되지 않은 경우.
    아래와 같이 Source Folders에 등록.

gradle 코드


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

// querydsl 적용
def querydslSrcDir = 'src/main/generated' // QClass 생성 위치

querydsl {
    jpa = true
    querydslSourcesDir = querydslSrcDir
}

sourceSets {
    main.java.srcDirs querydslSrcDir
}

configurations {
    querydsl.extendsFrom compileClasspath
}

compileQuerydsl{
    options.annotationProcessorPath = configurations.querydsl
}

group = 'com.devlogmoa'
version = '1.0.0-SNAPSHOT-' + new Date().format("yyyyMMddHHmmss")
sourceCompatibility = '1.8'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

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

    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'

    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    runtimeOnly 'com.h2database:h2'

    compile 'org.mariadb.jdbc:mariadb-java-client'

    // rss reader
    // https://mvnrepository.com/artifact/rome/rome
    implementation group: 'rome', name: 'rome', version: '1.0'

    developmentOnly 'org.springframework.boot:spring-boot-devtools'

    // 소셜 로그인 의존성
    compile('org.springframework.boot:spring-boot-starter-oauth2-client')

    // DB를 세션 저장소로 사용하기 위한 의존성
    implementation 'org.springframework.session:spring-session-jdbc'

    // https://mvnrepository.com/artifact/com.querydsl/querydsl-jpa
    implementation 'com.querydsl:querydsl-jpa'
    // https://mvnrepository.com/artifact/com.querydsl/querydsl-apt
    implementation 'com.querydsl:querydsl-apt'

    // @ConfigurationProperties
    annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"

    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}
반응형

'InteliJ' 카테고리의 다른 글

IntelliJ 실행 시 finished with non-zero exit value  (0) 2022.01.09
복사했습니다!