작성
·
303
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 입니다.
영한님께서 언급하신 부분을 말씀해주시면 좀 더 정확한 답변을 드릴 수 있을 것 같습니다!
말씀해주신 부분만 가지고 제가 조심스럽게 판단해본다면, 아마도
join oi.item i
이런 식으로 JPQL을 짜서 DB로 요청을 보낸다면, SQL로 보낼 때 해당 엔티티의 기본 키 값을 가지고 조인하는 것으로 변환되는 것을 언급하시지 않았나 싶습니다 :)
그리고 같은 맥락으로
where oi.order = :order
로 바꾸신 뒤, 직접 Order 객체를 넘겨보시면 SQL에서 orderItem의 외래키와 order의 기본키를 비교하는 것으로 변환되어 쿼리가 날아갈 것이라 예상합니다.
감사합니다.