我正在使用mapstrcut将我的实体映射到dto,我现在面临一个问题,即在DTO中有一个额外的字段是" discount",我需要mapstruct来管理填充这个字段,此字段基于2个值(salePrice和retailPrice)计算。
我的问题是如何使用mapstruct进行这种映射。
@Mapping(target="discount", source="retailPrice-salePrice")
当我尝试添加此行代码时,构建时会显示:
error: No property named "salePrice*retailPrice" exists in source parameter(s).
@Mapping(source="salePrice*retailPrice", target="discount")
那我怎么做这样的映射?
答案 0 :(得分:4)
您可以使用Java expressions的功能:
@Mapping( target="discount", expression="java( source.getRetailPrice() - source.getSalePrice()" )
给定的"表达"将按原样添加到生成的代码中。如果需要,您可以通过@Mapper#imports()
向生成的类添加其他导入。
我们(非常模糊)计划支持这样的表达式的实际脚本语言,但我们还没有:)