繁体   English   中英

地图结构:HashMap<string, object> 作为 Object 的来源</string,>

[英]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 mappingsnested 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM