Я использую spring-boot-1.5.6 и modelmapper-1.1.0.Я хотел бы сопоставить объект сущности с OrderDto, но не знаю, как это сделать через modelMapper.Пожалуйста, найдите следующий код
Order.Java
public class Order {
private String orderUid;
private Invoice invoice;
private List<Item> items;
//Getter & setter
}
Item.java
public class Item {
private String itemId;
private String itemName;
private String itemUid;
private String isbn;
//other details of item
//Getter & setter
}
OrderDTO.java
public class OrderDTO {
private String orderUid;
private Invoice invoice;
private String itemId;
private String itemName;
private String itemUid;
private String isbn;
//other details of item
//Getter & setter
}
Я хотел бы вернуть OrderDTO с товаром на основе itemID, который мы получаем от клиента (FrontEnd)
public Page<OrderDTO> convertOrderEntityToDTO (Page<Order> orderList,String itemId) {
ModelMapper modelMapper = new ModelMapper();
Type listType = new TypeToken<Page<OrderDTO>>() {}.getType();
modelMapper.addConverter((MappingContext<Order, OrderDTO> context) -> {
Item item = context.getSource().getItems().stream()
.filter(item -> equalsIgnoreCase(item.getItemId,itemId))
.findAny().orElse(null);
if (item != null) {
OrderDTO orderDTO = context.getDestination();
orderDTO.setItemId(item.getItemId());
orderDTO.setItemName(item.getItemName());
orderDTO.setItemUid(item.getItemUid());
orderDTO.setIsbn(item.getIsbn());
return orderDTO;
}
return null;
});
Page<OrderDTO> addonServices = modelMapper.map(orderList, listType);
}
В приведенном выше методе конвертер никогда не вызывался (возможно, из-за неправильной TypePair для modelMapper), а атрибуты, связанные с элементом, в OrderDTO всегда равны нулю.Я хотел бы получить значение Item, основанное на ItemId.
Любая помощь или подсказка будут заметны.Любое предложение с ModelMapper или без него было бы действительно заметно.