我想在不使用Dozer的深度映射属性的情况下映射合成。
另一个重要元素是组合类和主类映射到同一个类
我搜索了SO,Dozer文档(顺便说一下这很好),但我仍然没有找到我正在寻找的东西
示例: A和B - > ç
Class A {
B b
a1
}
Class B {
b1
b2
}
Class C {
ca1
cb1
cb2
}
我不想映射如下:
<mapping>
<class-a>A</class-a>
<class-b>C</class-b>
<field>
<a>b.b1</a>
<b>cb1</b>
</field>
etc.
</mapping>
我想使用类似的东西:
<mapping>
<class-a>B</class-a>
<class-b>C</class-b>
<field>
<a>b1</a>
<b>cb1</b>
</field>
etc.
</mapping>
<mapping>
<class-a>A</class-a>
<class-b>C</class-b>
<field>
<a>a1</a>
<b>ca1</b>
</field>
</mapping>
我的班级B与其他班级的作文一起使用。
我想尊重干(不要重复自己)。
答案 0 :(得分:0)
您不必指定深度映射,您应该能够说明B1如何映射到B2,如您所说:
<mapping>
<class-a>B1</class-a>
<class-b>B2</class-b>
<field>
<a>b1Param1</a>
<b>b2Param1</b>
</field>
</mapping>
作为单独的映射,A1如何映射到A2(但不是映射到组合类的子映射):
<mapping>
<class-a>A1</class-a>
<class-b>A2</class-b>
<field>
<a>b1</a>
<b>b2</b>
</field>
</mapping>
Dozer会认识到b1和b2是特定类的对象,并在两者之间寻找映射,可以作为单独的映射提供。
答案 1 :(得分:0)
不幸的是,除了使用深度映射并重复它之外,没有解决办法 问题是Dozer要映射C - &gt; A和B.这不容易。
一种解决方案是在“单向”映射的情况下能够进行这种类型的自动映射。
复杂问题,类似于此Dozer FAQ