无论出于何种原因,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
的字段,那么一切都按预期工作。换句话说,只有anotherField
和DestinationObject
中的字段名称相同时,映射才有效。我的理解是他们不需要匹配,这就是你在映射xml文件中定义字段的全部原因。
答案 0 :(得分:1)
似乎Dozer不会加载您的配置文件并根据默认配置(wildcard=true
)映射类。
检查是否已加载dozerBeanMapping.xml
。请参阅Debugging Initialization。
答案 1 :(得分:0)
默认情况下,推土机按名称映射字段。这就是为什么当您和anotherField
到SourceObject
映射有效时。
可能Dozer会加载您的映射文件。 Dozer自动从类路径加载映射文件。对于其他文件,您需要指定其路径。可能你的映射文件不在类路径中。