如何映射作文关系?

时间:2012-10-17 17:20:37

标签: java dozer

我想在不使用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与其他班级的作文一起使用。

我想尊重干(不要重复自己)。

2 个答案:

答案 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