[英]Dozer - Only mapping fields if destination and source objects have the same field names
無論出於何種原因,Dozer都不允許我映射具有不同名稱的字段,而僅僅是基於源對象映射字段。
在我的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
和SourceObject
的字段名稱相同時,映射才起作用。 我的理解是它們不需要匹配,這就是您在映射xml文件中定義字段的全部原因。
看來Dozer不會加載您的配置文件,而是根據默認配置( wildcard=true
)映射類。 檢查是否加載了dozerBeanMapping.xml
。 請參閱調試初始化 。
默認情況下,推土機映射字段按名稱命名。 這就是為什么當您和anotherField
到SourceObject
映射起作用時的原因。
推土機可能確實加載了映射文件。 推土機會自動從類路徑中加載映射文件。 對於其他文件,您需要指定它們的路徑。 可能您的映射文件不在類路徑中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.