0

我想在不使用 Dozer 的深度映射属性的情况下映射组合。

另一个重要的元素是组合类和主类映射到同一个类

我已经搜索了推土机文档(顺便说一句很好),但我仍然没有找到我要找的东西

示例:A 和 B -> C

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 类与其他类的作文一起使用。

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

4

2 回答 2

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 是特定类的对象,并寻找两者之间的映射,该映射可以作为单独的映射提供。

于 2012-10-21T15:59:53.537 回答
0

不幸的是,除了使用深度映射并重复它之外,没有解决方案。
问题在于 Dozer 映射 C -> A 和 B。这不容易。

一种解决方案是在“单向”映射的情况下启用这种类型的自动映射。

复杂的问题,类似于这个推土机常见问题

于 2012-10-29T09:03:15.437 回答