21.01.29 18:07 작성
·
437
0
안녕하세요 김영한 강사님
v6 로직을 작성하던중 에러가 발생하는데여 v6 로직중에
아래의 코드중 OrderQueryDto 생성자 호출 부분에서
에러가 발생하는데 원인이 무엇일까여?
그리고 v6 최적화 로직은 전체적으로 쉽지 않은데 일단
v6 최적화 부분은 대충 의미를 파악한뒤 다음 강의로
넘어가도 될까여?
controller/OrderApiController.java
@GetMapping("/api/v6/orders")
public List<OrderFlatDto> ordersV6() {
List<OrderFlatDto> flats = orderQueryRepository.findAllByDto_flat();
return flats.stream()
.collect(groupingBy(o -> new OrderQueryDto(o.getOrderId(), o.getName(),
o.getOrderDate(), o.getOrderStatus(), o.getAddress()),
mapping(o -> new OrderItemQueryDto(o.getOrderId(),
o.getItemName(), o.getOrderPrice(), o.getCount()), toList())))
.entrySet()
.stream().map(e -> new OrderQueryDto(e.getKey().getOrderId(),
e.getKey().getName(),
e.getKey().getOrderDate(),
e.getKey().getOrderStatus(),
e.getKey().getAddress(),
e.getValue()))
.collect(toList());
}
OrderQueryDto.java
@Data
@EqualsAndHashCode(of = "orderId")
public class OrderQueryDto {
private Long orderId;
private String name;
private LocalDateTime orderDate; //주문시간
private OrderStatus orderStatus;
private Address address;
private List<OrderItemQueryDto> orderItems;
public OrderQueryDto(Long orderId, String name, LocalDateTime orderDate,
OrderStatus orderStatus, Address address) {
this.orderId = orderId;
this.name = name;
this.orderDate = orderDate;
this.orderStatus = orderStatus;
this.address = address;
}
}
답변 1
0
2021. 01. 29. 22:43
안녕하세요. terecal님
파라미터 숫자가 맞지 않습니다.
마지막에 List<OrderItemQueryDto> orderItems가 빠졌네요^^
public OrderQueryDto(Long orderId, String name, LocalDateTime orderDate, OrderStatus orderStatus, Address address, List<OrderItemQueryDto> orderItems) {
this.orderId = orderId;
this.name = name;
this.orderDate = orderDate;
this.orderStatus = orderStatus;
this.address = address;
this.orderItems = orderItems;
}
추가로 이 부분은 난이도가 좀 있으니 우선 이런게 있구나 정도 알아두시고, 향후 성능 최적화의 필요성이 느껴질 때 다시 참고하시면 됩니다.
감사합니다.