gpt4 book ai didi

modelmapper - 使用 Modelmapper,如何映射到没有默认/无参数构造函数的类?

转载 作者:行者123 更新时间:2023-12-01 23:30:10 26 4
gpt4 key购买 nike

我想映射到一个只有一个带有 3 个参数的构造函数的源目标。我收到以下错误:

Failed to instantiate instance of destination com.novasol.bookingflow.api.entities.order.Rate. Ensure that com.novasol.bookingflow.api.entities.order.Rate has a non-private no-argument constructor.



当我在源目标中插入一个 no-args 构造函数时,它会起作用,但这会导致类的滥用,所以我宁愿不这样做。

我试过使用转换器,但这似乎不起作用:
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;
}
};

是否可以告诉模型映射器如何映射到没有无参数构造函数的目的地?

最佳答案

这似乎可以解决问题:

    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());
});

关于modelmapper - 使用 Modelmapper,如何映射到没有默认/无参数构造函数的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39264214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com