• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

엔티티 직접 사용 관련 질문입니다.

23.02.16 00:00 작성 조회수 241

0


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

[질문 내용]
안녕하세요 강의를 복습하다가 질문이 생겨서요

"select new jpabook.jpashop.repository.order.query.OrderItemQueryDto(oi.order.id, i.name, oi.orderPrice, oi.count) " +
        " from OrderItem oi " +
        " join oi.item i " +
        " where oi.order.id = :orderId", OrderItemQueryDto.class)

다음 소스를 보면 oi.order.id = :orderId 부분에서

예전 강의 내용에서 jpql에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용한다는 내용이 생각나서 oi.order = :orderId로 수정했더니 정상적으로 동작하지 않더라구요. 혹시 다른 내용인걸까요?

답변 1

답변을 작성해보세요.

0

y2gcoder님의 프로필

y2gcoder

2023.02.16

안녕하세요, 이승수 님. 공식 서포터즈 y2gcoder 입니다.

영한님께서 언급하신 부분을 말씀해주시면 좀 더 정확한 답변을 드릴 수 있을 것 같습니다!

말씀해주신 부분만 가지고 제가 조심스럽게 판단해본다면, 아마도 

join oi.item i

이런 식으로 JPQL을 짜서 DB로 요청을 보낸다면, SQL로 보낼 때 해당 엔티티의 기본 키 값을 가지고 조인하는 것으로 변환되는 것을 언급하시지 않았나 싶습니다 :)

그리고 같은 맥락으로

where oi.order = :order

로 바꾸신 뒤, 직접 Order 객체를 넘겨보시면 SQL에서 orderItem의 외래키와 order의 기본키를 비교하는 것으로 변환되어 쿼리가 날아갈 것이라 예상합니다.

감사합니다.