推土机布尔映射 - 布尔值

Dozer Boolean Mapping - Boolean Values

我正在公开一个使用另一个 SOAP 服务的服务。我获得了 JAXB 生成的服务模型。当我使用服务时,数据被设置到与该模型相关的对象中。我已经定义了我自己的域模型,它具有与 JAXB 模型完全相同的一组 类,但没有 xml 注释等。我正在使用推土机执行数据映射。当某些标有注解 (nillable=true) 的布尔元素为 null 时,我的域模型中的目标对象布尔对象设置为默认 true 或 false 值。我希望它保留相同的空值。布尔变量的映射和定义如下。

<mapping>
    <class-a>com.customer.types.CustomerPreferences
    </class-a>
    <class-b>com.customer.types.xml.CustomerPreferences
    </class-b>
    <field>
        <a is-accessible="true">isRequired</a>
        <b is-accessible="true">isRequired</b>
    </field>
</mapping>

JAXB 模型

  @javax.xml.bind.annotation.XmlElement(nillable=true)
  protected java.lang.Boolean isRequired;
  // getters and setters

领域模型

private Boolean isRequired;
//getters and setters

这是因为 JAXB 为布尔(对象)属性生成带有 "is" 前缀的方法,但 Dozer 为原始布尔类型使用 "is" 前缀。 "Is-accessible" 推土机映射配置 属性 应该可以解决问题。但由于某种原因,它似乎没有。你可以试试:

通过删除 "is" 前缀在域模型中重命名 属性

将域模型中的吸气剂和 setter 重命名为 get/set

使用"get-method" Dozer映射配置属性定义JAXB模型的get方法

使用 XJC 插件修复 JAXB 模型中的 get 方法