我想映射到一个只有一个带有 3 个参数的构造函数的源目标。我收到以下错误:
无法实例化目标 com.novasol.bookingflow.api.entities.order.Rate 的实例。确保 com.novasol.bookingflow.api.entities.order.Rate 具有非私有无参构造函数。
当我在源目标中插入无参数构造函数时它会起作用,但这可能会导致类的误用,所以我宁愿不这样做。
我尝试过使用转换器,但这似乎不起作用:
Converter<RateDTO, Rate> rateConverter = new AbstractConverter<RateDTO, Rate>() {
protected Rate convert(RateDTO source) {
CurrencyAndAmount price = new CurrencyAndAmount(source.getPrice().getCurrencyCode(), source.getPrice().getAmount());
Rate rate = new Rate(price, source.getPaymentDate(), source.getPaymentId());
return rate;
}
};
是否可以告诉 modelmapper 如何使用无参数构造函数映射到目的地?
这似乎成功了:
TypeMap<RateDTO, Rate> rateDTORateTypeMap = modelMapper.getTypeMap(RateDTO.class, Rate.class);
if(rateDTORateTypeMap == null) {
rateDTORateTypeMap = modelMapper.createTypeMap(RateDTO.class, Rate.class);
}
rateDTORateTypeMap.setProvider(request -> {
RateDTO source = RateDTO.class.cast(request.getSource());
CurrencyAndAmount price = new CurrencyAndAmount(source.getPrice().getCurrencyCode(), source.getPrice().getAmount());
return new Rate(price, source.getPaymentDate(), source.getPaymentId());
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)