• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

QueryDSL 사용 시 order by case 구문 질문 드립니다!

22.10.06 20:18 작성 조회수 805

2

=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

 

안녕하세요 혼자 프로젝트를 만들다가 특정 Type 별로 정렬을 수행해야 하는 경우가 생겨 검색하다 QueryDSL을 이용하여 orderBy Case 구문을 사용하는 방법이 궁금하여 질문을 남기게 되었습니다.

정확하게는 OneToMany 관계인 경우, Many 쪽의 요소를 정렬하고자 할 때의 방법을 잘 모르겠어서 질문드려요!

Store < === > Menu

위의 두 엔티티가 OneToMany 관계로 연관되어 있고, 매장 상세 정보에서 메뉴를 출력하는 경우, Menu의 Type 필드( MAIN, DESSERT, DRINK, BEVERAGE)를 기준으로 orderBy를 수행하려고 합니다.

현재 제가 구현한 방식은

< 특정 매장에 속한 메뉴 조회하는 로직 >

질문.PNG

< 매장의 정보를 조회하는 코드 >

질문2.PNG

매장을 조회하는 로직에서 한 번에 처리하려고 하니 방법이 생각나지 않아 두 쿼리를 분리하여 메뉴는 위의 코드에서 조회하고, 아래에서는 매장의 나머지 정보만 불러오는 형식으로 구현돼있습니다.

또한 매장 정보 조회 시, DTO에선 순수 매장 정보만을 불러오는 형식이라 메뉴를 조회하는 쿼리가 중복으로 나가진 않습니다!

연관 관계에 놓여 있는 엔티티를 별도의 조회 쿼리를 작성하여 불러오는 것이 이런 경우 맞는 방법인지 아니면 제가 아직 부족하여 놓친 하나로 합쳐서 조회할 수 있는 좋은 방법이 있는지 궁금합니다!!

긴 글 읽어주셔서 감사합니다!

 

 

 

 

 

답변 1

답변을 작성해보세요.

2

안녕하세요. ywonp94님

저도 더 나은 방법이 딱 떠오르지는 않네요.

혹시 더 나은 방법을 아시는 분들을 답변 부탁드릴께요.

감사합니다.

ywonp94님의 프로필

ywonp94

질문자

2022.10.18

답변 감사드립니다!

그렇다면 일단 위 로직 그대로 사용하겠습니다 ㅎㅎ 감사합니다!!