[英]Mapstruct: HashMap<String, Object> as source to Object
我如何使用 HashMap<String, MyObjectSource> 作为 object 的来源?
这是我的目标 object:
public class QuantityDTO{
private Integer shoes;
private Integer pants;
}
这是我的 object 来源:
public class Product{
private String name;
private Integer quantity;
}
这是我的地图 <String, Product>: <("shoes", Product), ("pants", Product)>
我试过使用这种方法,但它对我来说失败了。
我的映射器:
@Mapping(target = "shoes", source = "shoes.quantity")
@Mapping(target = "pants", source = "pants.quantity")
QuantityDTO mapToQuantityDto(Map<String, Product> map);
这里的问题是Map to Bean mappings
和nested source mappings
不能很好地结合。 问题在于 MapStruct 无法知道.
表示nested
映射标识符,或者如果它是 map 本身的key
的一部分。 两个选项都有效。
我的建议是自己写出映射,例如:
@Mapping(target = "shoes", source = "shoes")
@Mapping(target = "pants", source = "pants")
QuantityDTO mapToQuantityDto(Map<String, Product> map);
default Integer ProductToQuantity(Product product){
return product == null ? null : product.getQuantity();
}
这样源字段只包含key,映射的rest是用默认方法完成的。
对于更复杂的映射,您可以添加另一个映射注释方法来处理复杂性。
了解作为失败原因的消息是什么,或者如果您没有收到 mapstruct 生成的代码是什么样子的消息,也会很有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.