使用Orika将两个值映射到单个属性

时间:2013-11-22 16:21:10

标签: java orika

假设我有一个源对象,包含两个属性,a和b,如下所示:

public class Source {
    String a, b;
}

和一个具有一个属性c的目标对象:

public class Target {
    String c;
}

我想定义一个映射:

  1. 如果a不为空,则将属性a映射到c
  2. 如果b不为空,则将属性b映射到c
  3. 我认为将mapNulls设置为false的映射器是可能的:

    factory.registerClassMap(factory.classMap(Source.class, Target.class).field("a", "c").field("b", "c").mapNulls(false));
    

    但是,当我将属性a设置为非空值并将属性b保留为null时,映射会导致目标对象的c设置为null。

    我是否误解了mapNulls的目的?

1 个答案:

答案 0 :(得分:1)

这是因为mapNulls在最后一个字段设置了属性。 尝试在两个字段设置。
您也可以实现ConfigurableMapper