inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

39강. Querydsl 사용하기 - 두 번째 방법

이 질문이 왜 없는지 이해가 안 되지만 문제 인식 및 해결 방법 남깁니다.

177

lsj59285

작성한 질문수 35

1

getStats() 안에 쿼리 작성할 때, book에서 id와 name은 불러와지는데, type이 불러지지 않습니다. QBook 클래스에서 확인해보니 final type만 없더군요. 찾아보니 이유는 이러합니다.

"Kotlin에서 type은 리플렉션/메타프로그래밍에서 자주 사용되는 예약 필드명이고, QueryDSL이 Q 클래스 생성 시 내부적으로 getType()을 쓰기 때문에 필드명 충돌이 발생했을 가능성이 높아 생성되지 않을 수 있습니다. 이러한 경우 ./gradlew clean kaptKotlin 명령어로 재빌드 한 후 Q 클래스를 다시 생성하거나 type 명칭을 bookType으로 수정하여 해결할 수 있습니다."

저는 ./gradlew clean kaptKotlin로 재빌드하니 해결됐습니다.

 

java spring kotlin spring-boot 리팩토링

답변 2

0

최태현

안녕하세요! lsj59285님! 🙂 좋은 공유해주셔서 감사합니다.

몇 가지 자료를 더 살펴보느라 답변이 살짝 늦었는데요..! 제가 사용한 환경에서는 Kotlin Entity에 type 이라는 이름을 가진 필드가 있어도 (Enum이라 한다면..) 아래와 같은 QClass 내부의 type 필드가 잘 생겼습니다. 즉, type 이라는 이름만 사용해도 QClass를 통해 불러올 수 있습니다.

public final EnumPath<XXXType> type = createEnum("type", XXXType.class);

관련해서 검색도 해보고 제가 작업중인 여러 프로젝트도 확인해보았으나, type 이라는 필드를 그대로 사용하는데는 크게 어려움이 없었습니다.

혹시나 버전이나 환경에 따라 달라질 수도 있으니 참고만 해주시면 감사드리겠습니다. 🙇

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

질문에서 언급하신 “type” 필드와 관련된 문제는 QueryDSL에서 Kotlin Q 클래스 생성 시 발생할 수 있는 일반적인 문제 중 하나입니다. 이 문제는 특정 필드명이 QueryDSL의 내부적으로 사용되는 메서드 이름(getType)과 충돌할 때 발생할 수 있습니다. 이렇게 충돌이 발생하면 해당 필드가 Q 클래스에서 제외될 수 있습니다.

이럴 때 해결 방법으로 두 가지를 주로 사용합니다:
1. 필드명 변경: 필드명을 bookType과 같이 변경하여 충돌을 피할 수 있습니다.
2. 재빌드: ./gradlew clean kaptKotlin 명령어를 통해 Q 클래스를 깨끗하게 빌드하여 문제를 해결할 수 있습니다. 이 명령어는 새로운 Q 클래스를 생성하여 이전 빌드 과정에서 발생한 문제를 제거하는 데 도움을 줍니다.

해당 문제 해결에 대해 다른 학습자들에게도 많은 도움이 될 수 있을 것 같습니다. 아래 관련된 문서와 링크를 참고하시어 더 자세한 정보를 얻을 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

안녕하세요 혹시 프론트 코드 제공받을 수 있을까요?

0

67

2

실행이 안되네요

0

65

2

프론트 영역 보는법

0

51

2

companion object

0

75

2

Custom 레프직토리 형식

0

56

2

Querydsl 도입

0

67

2

fetch join DISTINCT 중복제거

1

82

2

표준 예외와 커스텀 예외 사용 전략 질문

0

84

3

테스트를 위한 코드

1

105

2

프로젝트 실행 에러

0

150

2

PDF 문서에 오타가 있어서 알려드립니다.

1

102

1

enum질문

1

86

1

테스트 후 AfterEach 함수에서 나오는 쿼리

0

136

2

테스트 fixture

1

210

2

./gradlew test 실행시 인식할수 없다고 뜹니다.

0

140

1

test 코드 실행시 경고가 발생합니다.

0

140

1

13강 User Kotlin 변환중

2

169

3

'추가 - 코프링과 플러그인' 강의 7:46 allopen 관련 질문

2

173

1

-

0

141

2

4:28 build.gradle 수정 시 kotlin-reflect관련 implementation 추가 해야할까요?

0

310

3

junit import 불가

0

269

3

테스트 코드와 관련하여 질문이 있습니다.

1

215

1

hibernate가 select를 두번 하는 이유

0

236

1

intelliJ 최신버전과 kotlin 1.6버전 충돌. 빌드 오류

1

999

2