推土机布尔映射 - 布尔值

时间:2016-01-15 16:05:51

标签: java jaxb spring-boot jackson dozer

我正在公开一个使用另一个SOAP服务的服务。我获得了JAXB生成的服务模型。当我使用服务时,数据被设置到与该模型相关的对象中。我已经定义了自己的域模型,它与JAXB模型具有完全相同的类集,但没有xml注释等。我使用dozer来执行数据映射。当一些标注有注释(nillable = true)的布尔元素为null时,我的域模型中的目标对象Boolean对象将设置为默认的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

1 个答案:

答案 0 :(得分:1)

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

通过删除&#34;来重命名域模型中的属性&#34;前缀

将域模型中的getter和setter重命名为get / set

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

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