인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

유승현님의 프로필 이미지
유승현

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

간단한 주문 조회 V1: 엔티티를 직접 노출

orderitem 내 item 초기화 관련

작성

·

229

0

초기화 진할때 forEach로 하면 초기화가 되는데,
같은 방법을 map으로 루핑하면 초기화가 안됩니다.
어떤 차이 때문에 안되는 걸까요?
forEach는 실행시 내부 array들의 값을 직접 변경하고, map은 새 array를 생성하는데 여기서 오는 차이일까요?
@RestController
@RequiredArgsConstructor
public class OrderApiController {

private final OrderRepository orderRepository;

@GetMapping("api/v1/orders")
public List<Order> ordersV1(){
List<Order> orders = orderRepository.findAllByString(new OrderSearch());
for (Order order: orders){
order.getMember().getName();
order.getDelivery().getAddress();

order.getOrderItems().stream()
.forEach(orderItem -> orderItem.getItem().getName());
// order.getOrderItems().stream()
// .map(orderItem -> orderItem.getItem().getName());
}
return orders;
}
}

답변 1

0

안녕하세요. 유승현님, 공식 서포터즈 OMG입니다.

map으로 돌고나서 collect() 를 해주셔야 합니다.

.map(orderItem -> orderItem.getItem().getName())
.collect(toList());

위와 같이 collect까지 추가해보시고 안되면 댓글 남겨주세요.

감사합니다.

유승현님의 프로필 이미지
유승현

작성한 질문수

질문하기