在使用推土机进行深度映射之前,我需要检查数据的有效性,是吗?

时间:2012-05-10 19:41:13

标签: dozer

我正在使用推土机在我的模型实体和我的DTO之间进行映射。 现在我面临的问题是我需要将 classA.classC 的某些属性映射到 classB 的不同属性,但首先我需要检查是否存在不一致,因为如果我没有classC会抛出异常,映射也不起作用。

假设我有:

class ClassA {

   private String name;
   private ClassC c;


   public ClassC getC() throws ValidityException; 
}

class ClassB {

   private String code;
   private Integer value;

}

class ClassC {

   private String name;
   private Integer value;

   // Getters & Setters below
}

所以现在我想像这样映射:

<mapping>
   <class-a>ClassA</class-a>
   <class-b>ClassB</class-b>
   <field>
      <a>c.name</a>
      <b>code</b>
   </field>
   <field>
      <a>c.value</a>
      <b>value</b>
   </field>
 </mapping>

如果从ClassA实例访问ClassC实例会引发异常,我将需要为两个b属性映射null。 从我正在阅读的内容中我假设我应该使用CustomConverter来访问ClassC实例捕获异常并在这种情况下映射null,但不确定如何实现这种转换器。

任何人都可以给我一些关于如何使用Dozer实现这一点的想法?

1 个答案:

答案 0 :(得分:0)

您确定编写了正确的映射吗?因为,

<field>
  <a>c.name</a>
  <b>name</b>

在上面的代码段中,您为classB编写了名称。实际上它应该是代码。