我一直在谷歌搜索和尝试不同的推土机配置选项,但到目前为止找不到一个简单的解决方案...... 问题如下:
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>
希望得到解决方案:)
答案 0 :(得分:1)
在dozer faq上找到:
我可以将一个字段映射到另一个嵌套在目标对象深层n层的字段吗?
是。 Dozer支持嵌套字段的点表示法。与其他推土机场映射一样,这些都是双向的。
<field>
<a>someNestedObj.someOtherNestedObj.someField</a>
<b>someOtherField</b>
</field>
答案 1 :(得分: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>