问题描述
我正在使用modelmapper,但有一个问题,就是DTO没有映射。
modelmapper mapping errors:
1) Error mapping domain.Order to domain.dto.order.OrderResponseInfo
1 error
org.modelmapper.MappingException: modelmapper mapping errors:
1) Error mapping domain.Order to dto.order.OrderResponseInfo
1 error
at org.modelmapper.internal.Errors.throwMappingExceptionIfErrorsExist(Errors.java:374)
at org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:69)
at org.modelmapper.modelmapper.mapInternal(modelmapper.java:497)
at org.modelmapper.modelmapper.map(modelmapper.java:340)
at net.class101.homework.service.OrderService.orders(OrderService.java:74)
OrderService
@Transactional // it's okay
public OrderResponseInfo order(OrderRequestInfo dto) {
Product product = productRepository.findOneByNaturalKey(dto.getProduct().getNaturalKey())
.orElseThrow(NotExistProductException::new);
OrderProduct orderProduct = OrderProduct.createOrderProduct(product,product.getPrice(),dto.getCount());
Order order = Order.createOrder(orderProduct);
orderRepository.save(order);
return modelmapper.map(order,OrderResponseInfo.class);
}
@Transactional // it's modelmapperError
public OrderResponseInfo orders(List<OrderRequestInfo> orderRequests) {
List<OrderProduct> orderProducts = new ArrayList<>();
for(OrderRequestInfo order : orderRequests){
orderProducts.add(OrderProduct.createOrderProduct(order.getProduct(),order.getorderPrice(),order.getCount()));
}
Order order = Order.createOrder(orderProducts.toArray(new OrderProduct[0]));
orderRepository.save(order);
return modelmapper.map(order,OrderResponseInfo.class);
}
DTO
@Getter
@Setter
@NoArgsConstructor
public class OrderResponseInfo {
private Long id;
private Order order;
private BigDecimal totalOrderPrice;
private BigDecimal shippingCharge;
private BigDecimal requirePaymentPrice;
private List<OrderProduct> orderProducts;
public OrderResponseInfo(Long id,Order order) {
this.id = id;
this.order = order;
this.totalOrderPrice = order.getTotalPrice();
this.shippingCharge = order.getShippingCharge();
this.requirePaymentPrice = order.getRequirePaymentPrice();
this.orderProducts = order.getorderProducts();
}
}
Order
和OrderProduct
之间存在“一对多”的关系,我们认为一个订单可以有多个OrderProducts
。
当我现在测试一个订单时,modelmapper正常工作。
但是,modelmapper处理多个订单时出错,但是我不确定为什么。
单个订单(OrderService.order()
)和多个订单(OrderService.orders()
)之间的唯一区别是因素和通过for循环产生的OrderProduct
之间的区别。 / p>
已编辑
使用return modelmapper.map (order,orderResponseInfo.class);
代替return new OrderResponseInfo(order.getId(),order);
来确认映射正常工作。
为什么会这样?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)