Java Dozer映射两个参数计数不匹配的类

Java Dozer映射两个参数计数不匹配的类,java,dozer,object-object-mapping,Java,Dozer,Object Object Mapping,我有两个bean,一个有五个属性,另一个有四个属性。如果我只是想忽略额外的属性,如何配置映射 我看到的所有排除示例都为第一类和第二类提供了一个参数。你不需要做任何事情;推土机应在开箱即用 考虑以下两个bean: Source.java public class Source { private String field1; private String field2; private String field3; // Getters and setters o

我有两个bean,一个有五个属性,另一个有四个属性。如果我只是想忽略额外的属性,如何配置映射


我看到的所有排除示例都为第一类和第二类提供了一个参数。

你不需要做任何事情;推土机应在开箱即用

考虑以下两个bean:

Source.java

public class Source {

    private String field1;
    private String field2;
    private String field3;

   // Getters and setters omitted

}
public class Destination {

    private String field1;
    private String field2;

    // Getters and setters omitted

}
Destination.java

public class Source {

    private String field1;
    private String field2;
    private String field3;

   // Getters and setters omitted

}
public class Destination {

    private String field1;
    private String field2;

    // Getters and setters omitted

}
可以在dozer.xml文件中使用以下映射(这将映射两个bean中名称匹配的所有属性):


com.example.Source
com.example.Destination
以下单元测试表明,映射是双向的:

    @Test
    public void sourceToDestination() {
        List<String> mappingFiles = new ArrayList<String>();
        mappingFiles.add("dozer.xml");
        this.beanMapper = new DozerBeanMapper(mappingFiles);

        Source source = new Source();
        source.setField1("A");
        source.setField2("B");
        source.setField3("C");

        Destination dest = beanMapper.map(source, Destination.class);
        assertEquals("A", dest.getField1());
        assertEquals("B", dest.getField2());
    }

    @Test
    public void destinationToSource() {
        List<String> mappingFiles = new ArrayList<String>();
        mappingFiles.add("dozer.xml");
        this.beanMapper = new DozerBeanMapper(mappingFiles);

        Destination dest = new Destination();
        dest.setField1("A");
        dest.setField2("B");

        Source source = beanMapper.map(dest, Source.class);
        assertEquals("A", source.getField1());
        assertEquals("B", source.getField2());
        assertNull(source.getField3());
    }
@测试
public void sourceToDestination(){
List mappingFiles=new ArrayList();
mappingFiles.add(“dozer.xml”);
this.beanMapper=新的DozerBeanMapper(映射文件);
Source Source=新源();
来源:setField1(“A”);
资料来源:setField2(“B”);
资料来源:setField3(“C”);
Destination dest=beanMapper.map(源,Destination.class);
assertEquals(“A”,dest.getField1());
assertEquals(“B”,dest.getField2());
}
@试验
public void destinationsource(){
List mappingFiles=new ArrayList();
mappingFiles.add(“dozer.xml”);
this.beanMapper=新的DozerBeanMapper(映射文件);
Destination dest=新目的地();
目的地设置字段1(“A”);
目的地设置域2(“B”);
Source-Source=beanMapper.map(dest,Source.class);
assertEquals(“A”,source.getField1());
assertEquals(“B”,source.getField2());
assertNull(source.getField3());
}

当我们将源映射到目标时,由于目标没有名为
field3
的属性,因此将忽略它。当我们以另一种方式映射(目标到源)时,源中的
字段3
为空。

您不需要做任何事情;推土机应在开箱即用

考虑以下两个bean:

Source.java

public class Source {

    private String field1;
    private String field2;
    private String field3;

   // Getters and setters omitted

}
public class Destination {

    private String field1;
    private String field2;

    // Getters and setters omitted

}
Destination.java

public class Source {

    private String field1;
    private String field2;
    private String field3;

   // Getters and setters omitted

}
public class Destination {

    private String field1;
    private String field2;

    // Getters and setters omitted

}
可以在dozer.xml文件中使用以下映射(这将映射两个bean中名称匹配的所有属性):


com.example.Source
com.example.Destination
以下单元测试表明,映射是双向的:

    @Test
    public void sourceToDestination() {
        List<String> mappingFiles = new ArrayList<String>();
        mappingFiles.add("dozer.xml");
        this.beanMapper = new DozerBeanMapper(mappingFiles);

        Source source = new Source();
        source.setField1("A");
        source.setField2("B");
        source.setField3("C");

        Destination dest = beanMapper.map(source, Destination.class);
        assertEquals("A", dest.getField1());
        assertEquals("B", dest.getField2());
    }

    @Test
    public void destinationToSource() {
        List<String> mappingFiles = new ArrayList<String>();
        mappingFiles.add("dozer.xml");
        this.beanMapper = new DozerBeanMapper(mappingFiles);

        Destination dest = new Destination();
        dest.setField1("A");
        dest.setField2("B");

        Source source = beanMapper.map(dest, Source.class);
        assertEquals("A", source.getField1());
        assertEquals("B", source.getField2());
        assertNull(source.getField3());
    }
@测试
public void sourceToDestination(){
List mappingFiles=new ArrayList();
mappingFiles.add(“dozer.xml”);
this.beanMapper=新的DozerBeanMapper(映射文件);
Source Source=新源();
来源:setField1(“A”);
资料来源:setField2(“B”);
资料来源:setField3(“C”);
Destination dest=beanMapper.map(源,Destination.class);
assertEquals(“A”,dest.getField1());
assertEquals(“B”,dest.getField2());
}
@试验
public void destinationsource(){
List mappingFiles=new ArrayList();
mappingFiles.add(“dozer.xml”);
this.beanMapper=新的DozerBeanMapper(映射文件);
Destination dest=新目的地();
目的地设置字段1(“A”);
目的地设置域2(“B”);
Source-Source=beanMapper.map(dest,Source.class);
assertEquals(“A”,source.getField1());
assertEquals(“B”,source.getField2());
assertNull(source.getField3());
}
当我们将源映射到目标时,由于目标没有名为
field3
的属性,因此将忽略它。当我们以另一种方式映射(目标到源)时,源中的
field3
为空