해결된 질문
작성
·
823
·
수정됨
2
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
@GetMapping("/api/v3/orders")
public List<OrderDto> orderV3() {
List<Order> orders = orderRepository.findAllWithItem();
for (Order order: orders) {
System.out.println("order ref = " + order + " id = " + order.getId());
}
List<OrderDto> result = orders.stream()
.map(o -> new OrderDto(o))
.collect(Collectors.toList());
return result;
}
...
public List<Order> findAllWithItem() {
return entityManager.createQuery(
"select o from Order o" +
" join fetch o.member m" +
" join fetch o.delivery d" +
" join fetch o.orderItems oi" +
" join fetch oi.item i", Order.class)
.getResultList();
}
이렇게 한 다음 v3 에게 요청을 넣었습니다.
그 결과
select
o1_0.order_id,
d1_0.delivery_id,
d1_0.city,
d1_0.street,
d1_0.zipcode,
d1_0.status,
m1_0.member_id,
m1_0.city,
m1_0.street,
m1_0.zipcode,
m1_0.username,
o1_0.order_date,
oi1_0.order_id,
oi1_0.order_item_id,
oi1_0.count,
i1_0.item_id,
i1_0.dtype,
i1_0.name,
i1_0.price,
i1_0.stock_quantity,
i1_0.artist,
i1_0.etc,
i1_0.author,
i1_0.isbn,
i1_0.actor,
i1_0.director,
oi1_0.order_price,
o1_0.status
from
orders o1_0
join
member m1_0
on m1_0.member_id=o1_0.member_id
join
delivery d1_0
on d1_0.delivery_id=o1_0.delivery_id
join
order_item oi1_0
on o1_0.order_id=oi1_0.order_id
join
item i1_0
on i1_0.item_id=oi1_0.item_id
order ref = jpabook.jpashop.domain.Order@801a84d id = 1
order ref = jpabook.jpashop.domain.Order@7be83ead id = 2
다음과 같은 SQL 쿼리를 보냈구요.
그런데 4개가 아니라 2개라서 문의를 드립니다.
그런데 H2 DB에서 해당 쿼리를 입력하면 4개가 잘나옵니다.
또한 포스트맨으로 받은 요청도 2개가 출력됩니다.
[
{
"orderId": 1,
"name": "userA",
"orderDate": "2024-03-18T23:29:35.545094",
"orderStatus": "ORDER",
"address": {
"city": "서울",
"street": "1",
"zipcode": "11111"
},
"orderItems": [
{
"itemName": "JPA1 Book",
"orderPrice": 10000,
"count": 1
},
{
"itemName": "JPA2 Book",
"orderPrice": 20000,
"count": 2
}
]
},
{
"orderId": 2,
"name": "userB",
"orderDate": "2024-03-18T23:29:35.555094",
"orderStatus": "ORDER",
"address": {
"city": "부산",
"street": "2",
"zipcode": "22222"
},
"orderItems": [
{
"itemName": "Spring1 Book",
"orderPrice": 20000,
"count": 3
},
{
"itemName": "Spring2 Book",
"orderPrice": 40000,
"count": 2
}
]
}
]
어떠한 것이 잘못되었는지 궁금합니다.