2

我一直在谷歌搜索并尝试不同的推土机配置选项,但到目前为止找不到简单的解决方案......问题如下:

class A {
 String test;
 B test2;
}
class B {
 String test3;
 String test4;
}

class C {
 String test;
 String test3;
 String test4;
}

现在我想将 A(包括 B)中的所有字段映射到 C 中的平面表示。是否可以仅使用配置来映射它?问题是我需要在许多不同的类中映射 B 并且我不想为每个类编写这样的映射:

<mapping>
    <class-a>A</class-a>
    <class-b>C</class-b>
    <field>
        <a>test2.test3</a>
        <b>test3</b>
    </field>
    <field>
        <a>test2.test4</a>
        <b>test4</b>
    </field>
</mapping>

希望有一个解决方案:)

4

2 回答 2

1

在推土机常见问题解答中找到:

我可以将一个字段映射到另一个在目标对象中嵌套 n 层的字段吗?

是的。Dozer 支持嵌套字段的点表示法。与其他推土机场映射一样,这些是双向的。

<field>
  <a>someNestedObj.someOtherNestedObj.someField</a>
  <b>someOtherField</b>
</field>

推土机常见问题

于 2013-06-04T04:37:23.283 回答
1

诀窍是使用映射 ID 和“this”。您只需要定义一次 caseB 并且可以重复使用它。

<mapping map-id="caseB">
    <class-a>B</class-a>
    <class-b>C</class-b>
    <field>
        <a>test3</a>
        <b>test3</b>
    </field>
    <field>
        <a>test4</a>
        <b>test4</b>
    </field>
</mapping>
<mapping>
    <class-a>A</class-a>
    <class-b>C</class-b>
    <field map-id="caseB">
        <a>test2</a>
        <b>this</b>
    </field>
</mapping>
于 2013-10-03T19:00:46.473 回答