해결된 질문
23.07.23 21:17 작성
·
279
0
안녕하세요. 강의 기준으로 응용하고 싶어서 orderitem을 한개가 아닌 여러개생성하고 주문하려고 하고 있는데
테스트java
@Test
@Rollback(value = false)
public void 상품주문() throws Exception{
Member member = new Member();
member.setName("회원1");
member.setLoginId("admin");
member.setPassword("admin");
member.setEmail("admin");
em.persist(member);
Item item = new Item();
item.setItemName("티셔츠1");
item.setPrice(100000);
em.persist(item);
OrderItem order1 = OrderItem.createOrderItem(item, item.getPrice(), 2,"blue","L");
OrderItem order2 = OrderItem.createOrderItem(item, item.getPrice(), 4,"blue","L");
List<OrderItem> orders = new ArrayList<>();
orders.add(order1);
orders.add(order2);
Long orderId = orderService.order(member.getId(), item.getId(), orders);
Order findOrder = orderRepository.findOne(orderId);
Assert.assertEquals("상품 주문시 상태는 : ", OrderStatus.ORDER,findOrder.getOrderStatus());
}
OrderService.java
@Transactional
public Long order(Long memberId, Long itemId, OrderItem... orderItems) {
//엔티티 조회
Member member = memberRepository.findOne(memberId);
Item item = itemRepository.findOne(itemId);
List<OrderItem> orders = new ArrayList<>();
//주문상품 생성
for(OrderItem order : orderItems){
OrderItem orderItem = OrderItem.createOrderItem(item,item.getPrice(),order.getQuantity(),order.getColor(),order.getSize());
orders.add(orderItem);
}
// 주문 생성
Order order = Order.createOrder(member, (OrderItem) orders);
//주문 저장
orderRepository.save(order);
return order.getId();
}
OrderItem... orderItems 파라미터가 list를 받지 못하는거같은데 혹시 어떻게 해야할까요?
답변 1
0
안녕하세요. 카도아보님, 공식 서포터즈 코즈위버입니다.
파라미터가 이와 같을 경우 something(Long memberId, OrderItem ... orderItem) 호출하는 쪽은 다음과 같이 호출해야 합니다. something(1L, orderitem1, orderitem2);
지금 작성하신 코드는 List<OrderItem> 형태이므로 order() 메소드의 파라미터를 다음과 같이 수정하여 처리할 수 잇습니다. order(Long memberId, Long itemId, List<OrderItem> orderItems) { ... }
감사합니다.
2023. 07. 26. 09:38
아 제가 ...을 처음 봐서 먼가했네요 !감사합니다.