ModelMapper-条件和提供者

时间:2019-10-31 19:55:59

标签: conditional-statements modelmapper

全部-

我正在尝试使用条件和提供者进行“添加映射” ...最重要的是,我的值之一是Instant,并且没有提供者,它会爆炸,告诉我Instant没有默认值构造函数(不是)

我已经走了这么远:

.addMappings(映射器-> {

            mapper.when(ctx -> customerSource(ctx).getEnableDuplicatePOChangedTime().isDirty())
                .<Instant>map(src -> src.getEnableDuplicatePOChangedTime().getValue(), (dest, v) -> dest.setEnableDuplicatePOChangedTime(v));  

            mapper.with(req -> req.getSource()).<Instant>map(src -> src.getEnableDuplicatePOChangedTime().getValue(), (dest, v) -> dest.setEnableDuplicatePOChangedTime(v));

})

但是,现在似乎发生的事情是,它一起跳过了所有条件-无论如何映射它!

在调试中,这似乎覆盖了条件,将其设置为null。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好吧,我似乎是通过预先使用提供程序并摆脱了添加映射来解决这个问题的。。。所以就像这样

.setProvider(request -> {
                    CustomerPreferencesDirty source = CustomerPreferencesDirty.class.cast(request.getSource());
                    PreferencesByCustomer dest = new PreferencesByCustomer();
                    if (source.getEnableDuplicatePOChangedTime().isDirty()) {
                        dest.setEnableDuplicatePOChangedTime(source.getEnableDuplicatePOChangedTime().getValue());
                    return dest;
                })

,然后继续使用addMappings来处理除此属性以外的其他属性。...我对此很满意。