推土机 - 如果目标和源对象具有相同的字段名称,则仅映射字段

时间:2015-07-05 04:28:01

标签: java mapping dozer

无论出于何种原因,Dozer都不允许我映射具有不同名称的字段,它只是基于源对象的映射字段。

在我的i文件中,我有:

dozerBeanMapping.xml

对于我拥有的物品:

<mapping type="one-way">
    <class-a>data.SourceObject</class-a>
    <class-b>data.DestinationObject</class-b>
    <field>
        <a>someField</a>
        <b>anotherField</b>
    </field>
</mapping>

现在,如果我更改package data; public class SourceObject { private String someField = "test"; public void setSomeField(String someField) { this. someField = someField; } public String getSomeField() { return someField; } } package data; public class DestinationObject { private String anotherField; public void setAnotherField(String anotherField) { this.anotherField = anotherField; } public Date getAnotherField() { return anotherField; } } 以包含名为SourceObject的字段,那么一切都按预期工作。换句话说,只有anotherFieldDestinationObject中的字段名称相同时,映射才有效。我的理解是他们不需要匹配,这就是你在映射xml文件中定义字段的全部原因。

2 个答案:

答案 0 :(得分:1)

似乎Dozer不会加载您的配置文件并根据默认配置(wildcard=true)映射类。 检查是否已加载dozerBeanMapping.xml。请参阅Debugging Initialization

答案 1 :(得分:0)

默认情况下,推土机按名称映射字段。这就是为什么当您和anotherFieldSourceObject映射有效时。

可能Dozer会加载您的映射文件。 Dozer自动从类路径加载映射文件。对于其他文件,您需要指定其路径。可能你的映射文件不在类路径中。