【问题标题】:Dozer mapping for objects without setters没有设置器的对象的推土机映射
【发布时间】:2018-07-05 15:03:13
【问题描述】:
public class ParentOne {

    private List<ChildOne> child;

    public List<ChildOne> getChild() {
        if (child == null) {
            child = new ArrayList<ChildOne>();
        }
        return child;
    }
}

public class ParentTwo {

    private List<ChildTwo> child;

    public List<ChildTwo> getChild() {
        if (child == null) {
            child = new ArrayList<ChildTwo>();
        }
        return child;
    }
}

推土机映射

<mapping>
    <class-a>ParentOne</class-a>
    <class-b>ParentTwo</class-b>
    <field>
        <a is-accessible="true">child</a>
        <b is-accessible="true">child</b>
    </field>
</mapping>

public class Client {

    public static void main(String[] args) {
        ParentOne parentOne = new ParentOne();
        parentOne.getChild().add(new ChildOne());
        parentOne.getChild().add(new ChildOne());

        ParentTwo parentTwo = dozerBeanMapper.map(parentOne, ParentTwo.class);
    }
}

父类不包含列表的设置器。因此,我以直接访问字段的方式制作了推土机映射。 映射发生得很好,但问题是在映射 parentTwo 实例包含 ChildOne 类型的孩子之后,它应该是 ChildTwo。

我错过了什么吗?

【问题讨论】:

    标签: java mapping dozer


    【解决方案1】:

    添加提示(请参阅here 了解更多信息)。

    <mapping>
        <class-a>ParentOne</class-a>
        <class-b>ParentTwo</class-b>
        <field>
            <a is-accessible="true">child</a>
            <b is-accessible="true">child</b>
            <a-hint>ChildOne</a-hint>
            <b-hint>ChildTwo</b-hint>
        </field>
    </mapping>
    

    您可能需要使用类的完全限定名称,而不仅仅是 ChildOneChildTwo,但除此之外,它应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      相关资源
      最近更新 更多