簡體   English   中英

推土機-僅在目標對象和源對象具有相同的字段名稱時映射字段

[英]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的字段,那么一切都會按預期進行。 換句話說,僅當DestinationObjectSourceObject的字段名稱相同時,映射才起作用。 我的理解是它們不需要匹配,這就是您在映射xml文件中定義字段的全部原因。

看來Dozer不會加載您的配置文件,而是根據默認配置( wildcard=true )映射類。 檢查是否加載了dozerBeanMapping.xml 請參閱調試初始化

默認情況下,推土機映射字段按名稱命名。 這就是為什么當您和anotherFieldSourceObject映射起作用時的原因。

推土機可能確實加載了映射文件。 推土機會自動從類路徑中加載映射文件。 對於其他文件,您需要指定它們的路徑。 可能您的映射文件不在類路徑中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM