【问题标题】:Dozer - Only mapping fields if destination and source objects have the same field namesDozer - 如果目标和源对象具有相同的字段名称,则仅映射字段
【发布时间】:2015-07-05 04:28:00
【问题描述】:

无论出于何种原因,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 文件中定义字段的全部原因。

【问题讨论】:

    标签: java mapping dozer


    【解决方案1】:

    Dozer 似乎没有加载您的配置文件并根据默认配置 (wildcard=true) 映射类。 检查是否加载了dozerBeanMapping.xml。见Debugging Initialization

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-26
        • 1970-01-01
        相关资源
        最近更新 更多