Skip to content
This repository has been archived by the owner on Jan 17, 2024. It is now read-only.

[기타] #10 JPQL 코드 리뷰 #37

Closed
Dokkabei97 opened this issue Jul 30, 2023 · 0 comments
Closed

[기타] #10 JPQL 코드 리뷰 #37

Dokkabei97 opened this issue Jul 30, 2023 · 0 comments
Assignees
Labels
질문 질문 있으면 해당 라벨을 포함해 주세요 코드 리뷰 코드 리뷰 요청 시 해당 라벨을 포함해 주세요

Comments

@Dokkabei97
Copy link
Owner

Dokkabei97 commented Jul 30, 2023

질문자

@handyejin

질문내용

  • 데이터는 있지만 검색시 검색 결과는 없음

원인

MemberRepository 코드에 원인이 되는 코드

@Query(value = "SELECT v FROM members v")
fun findByNicknameContainingIgnoreCase(@Param("nickname") keyword: String): List<SearchMemberResponse>

이미 JPA 구현체로 findByNicknameContainingIgnoreCase가 있음에도 JPQL로 어노테이션인 @Query가 존재하며
해당 쿼리도 잘못되어 있음 그래서 아래 코드 둘중 하나로 구성 되어야함

해결책

// JPA로만 구현시
fun findByNicknameContainingIgnoreCase(nickname: String): List<Member>

// JPQL로 구현시 JPQL에서 :파라미터명이 있어야 제대로 인식
@Query("SELECT m FROM Member m WHERE m.nickname LIKE %:nickname%")
fun findByNickname(@Param("nickname") nickname: String): List<Member>

또한
MemberRepository , MemberReader에서 반환값들은 Member로 해야함
이유는 로우레벨이기도 하며 DTO는 주기적으로 변경이 이루어지기 때문 그리고 JPA에서 DTO로 바로 반환하기 번거로움 점도 존재
그래서 보통 DTO로 바로 반환을 원할경우 Querydsl을 사용

그외

SearchController에서 @PathVariable로 검색을 하고 있지만 쿼리 파라미터로 하는것을 권장

일부 더 수정해야 할 코드들이 보이지만 나머지는 직접 해결해보세요!

@Dokkabei97 Dokkabei97 added 질문 질문 있으면 해당 라벨을 포함해 주세요 코드 리뷰 코드 리뷰 요청 시 해당 라벨을 포함해 주세요 labels Jul 30, 2023
@Dokkabei97 Dokkabei97 self-assigned this Jul 30, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
질문 질문 있으면 해당 라벨을 포함해 주세요 코드 리뷰 코드 리뷰 요청 시 해당 라벨을 포함해 주세요
Projects
None yet
Development

No branches or pull requests

1 participant