ysk(0soo)
Lifealong
ysk(0soo)
전체 방문자
오늘
어제
  • 분류 전체보기 (238)
    • Java (50)
      • whiteship-java-study (11)
      • Java (28)
      • time (6)
    • Spring (68)
      • JPA (15)
      • Spring (1)
      • SpringBoot (1)
      • SpringMVC (6)
      • Spring Security (22)
      • Jdbc (1)
      • RestDocs (14)
      • log (6)
    • Kotlin (3)
    • Web (2)
      • nginx (1)
    • Database (14)
      • MySQL (5)
      • PostgreSQL (1)
      • SQL (1)
      • Redis (4)
    • C, C++ (0)
    • Git (1)
    • Docker (2)
    • Cloud (3)
      • AWS (3)
    • 도서, 강의 (0)
      • t5 (0)
    • 기타 (7)
      • 프로그래밍 (1)
    • 끄적끄적 (0)
    • CS (14)
      • 운영체제(OS) (2)
      • 자료구조(Data Structure) (9)
    • 하루한개 (12)
      • 우아한 테크코스-10분테코톡 (12)
    • 스터디 (12)
      • 클린 아키텍처- 로버트마틴 (2)
      • JPA 프로그래밍 스터디 (10)
    • 테스트 (34)
      • JUnit (19)
      • nGrinder (2)
      • JMeter (0)
    • Infra (3)
    • 프로그래머스 백엔드 데브코스 3기 (0)
    • 디자인 패턴 (3)
    • Issue (4)
    • system (1)
      • grafana (0)
      • Prometheus (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

공지사항

인기 글

태그

  • node exporter basic auth
  • junit5
  • nginx basic auth
  • AccessDecisionVoter 커스텀
  • 구조화된 동시성
  • nGrinder
  • restdocs custom
  • 가상 스레드
  • 동시성 제어
  • java
  • scope value
  • AccessDecisionManager
  • FilterSecurityInterceptor
  • mysql
  • UserDetailsService
  • 가상 스레드 예외 핸들링
  • AuthenticationException
  • 동일성
  • tree
  • StructuredConcorrency
  • restdocs enum
  • querydsl
  • LocalDateTime
  • 트랜잭션
  • DataJpaTest
  • 정규표현식
  • VirtualThread Springboot
  • 인가(Authorization) 처리
  • jpa
  • 동등성

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ysk(0soo)

Lifealong

Kotlin

Kotlin Querydsl 설정

2023. 1. 26. 20:52

스프링부트 2.7.x 버전대 기준이다.

build.gradle.kts 전체 파일

// build.gradle.kts
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    val kotlinVersion = "1.6.21"

    id("org.springframework.boot") version "2.7.7"
    id("io.spring.dependency-management") version "1.0.11.RELEASE"
    kotlin("jvm") version kotlinVersion
    kotlin("plugin.spring") version kotlinVersion
    kotlin("plugin.jpa") version kotlinVersion

        // ✅ KAPT(Kotlin Annotation Processing Tool)를 설치
    kotlin("kapt") version kotlinVersion
        // ✅ Intellij에서 사용할 파일을 생성하는 플러그인
    idea
}

group = "com.ys"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_17

configurations {
    compileOnly {
        extendsFrom(configurations.annotationProcessor.get())
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
        annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
    testImplementation("org.springframework.boot:spring-boot-starter-test")    

        // ✅ querydsl 의존성 추가
    implementation("com.querydsl:querydsl-jpa:5.0.0")
        // ✅ KAPT(Kotlin Annotation Processing Tool)를 설정
        //    kotlin 코드가 아니라면 kapt 대신 annotationProcessor를 사용
        //    JPAAnnotationProcessor를 사용하기 위해 마지막에 :jpa를 붙여야 한다.
    kapt("com.querydsl:querydsl-apt:5.0.0:jpa")

}


tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs = listOf("-Xjsr305=strict")
        jvmTarget = "17"
    }
}

tasks.withType<Test> {
    useJUnitPlatform()
}

// ✅ QClass를 사용할 수 있도록 경로에 추가
idea {
    module {
        val kaptMain = file("build/generated/source/kapt/main")
        sourceDirs.add(kaptMain)
        generatedSourceDirs.add(kaptMain)
    }
}

kapt("com.querydsl:querydsl-apt:5.0.0:jpa") 는 JPAAnnotationProcessor를 적용하는 부분이다.

  • 공식문서에 JPAAnnotationProcessor 소개문.

The JPAAnnotationProcessor finds domain types annotated with the javax.persistence.Entity annotation and generates query types for them.

JPAAnnotationProcessor는 @Entity 어노테이션이 붙은 도메인을 찾아서 해당 도메인의 쿼리 타입을 생성한다.

QClass 생성

./gradlew clean compileKotlin

에러 해결

오류: 기본 클래스 org.gradle.wrapper.GradleWrapperMain을(를) 찾거나 로드할 수 없습니다.
원인: java.lang.ClassNotFoundException: org.gradle.wrapper.GradleWrapperMain

라는 에러 발생시에는 .gradle/wrapper/ 아래에 두 파일이 존재하지 않아서 그렇다.

  • gradle-wrapper.jar
  • gradle-wrapper.properties

gradle build 혹은 gradle wrap을 하지 않았으면 gradle-wrapper.jar이 누락되어 있으므로

gradle wrap 명령이 실행 후에 ./gradlew clean compileQuerydsl 을 실행한다

테스트코드 에러 - Execution failed for task ':compileQuerydsl'.

Task :compileQuerydsl FAILED

error: cannot find symbol

Execution failed for task ':compileQuerydsl'.

같은 에러 발생시에는 Preference -> Build.Execution, Deployment -> Build Tools -> gradle

  • build and run using : Intellij IDEA
  • Run tests using : Intellij IDEA

로 설정하고 다시 테스트하면 테스트가 통과한다.

저작자표시 비영리 (새창열림)

'Kotlin' 카테고리의 다른 글

[코틀린]코루틴(coroutine)  (0) 2023.05.09
Kotlin List Validation - 리스트 타입 파라미터 검증  (0) 2023.01.03
    'Kotlin' 카테고리의 다른 글
    • [코틀린]코루틴(coroutine)
    • Kotlin List Validation - 리스트 타입 파라미터 검증
    ysk(0soo)
    ysk(0soo)
    백엔드 개발을 좋아합니다. java kotlin spring, infra 에 관심이 많습니다. email : kim206gh@naver.com github : https://github.com/devysk

    티스토리툴바