java - 带注释的推土机深度映射

标签 java dozer

无法将深度映射从源类映射到目标类 SourceEmployee.Address.houseNameTargetEmployee.houseName

源对象类

public class SourceEmployee 
{   
    private String empName;
    private Address addr;


    enter code here

    @Mapping("empName")
    public String getEmpName() {
        return empName;
    }
    public void setEmpName(String empName) {
        this.empName = empName;
    }   
    public Address getAddr() {
        return addr;
    }

    public void setAddr(Address addr) {
        this.addr = addr;
    }   
}

地址类

public class Address 
{
    private String houseName;
    public String getHouseName() {
        return houseName;
    }
    public void setHouseName(String houseName) {
        this.houseName = houseName;
    }
}

目标对象

public class TargetEmployee 
{

    private String empName;
    private String houseName;

    public String getHouseName() {
        return houseName;
    }
    public void setHouseName(String houseName) {
        this.houseName = houseName;
    }
    public String getEmpName() {
        return empName;
    }
    public void setEmpName(String empName) {
        this.empName = empName;
    }
}

主类从源复制到目标

public class CopyAttributes 
{

    public static void main(String args[])
    {
        SourceEmployee sourceEmp = new SourceEmployee();
        sourceEmp.setEmpName("Rafi");

        Address adr = new Address();        
        adr.setHouseName("Aashiyana");
        sourceEmp.setAddr(adr);

        Mapper mapper = new DozerBeanMapper();
        TargetEmployee destObject = mapper.map(sourceEmp, TargetEmployee.class);

        System.out.println(destObject.getEmpName());
        System.out.println(destObject.getHouseName());

    }
}

最佳答案

万一其他人遇到同样的问题,我设法通过这样做来纠正这种情况:

public class TargetEmployee 
{

    private String empName;
    private String houseName;

    @Mapping("addr.houseName")
    public String getHouseName() {
        return houseName;
    }
    public void setHouseName(String houseName) {
        this.houseName = houseName;
    }
    public String getEmpName() {
        return empName;
    }
    public void setEmpName(String empName) {
        this.empName = empName;
    }
}

@Mapping("empName")

不需要在 SourceEmployee 中设置

关于java - 带注释的推土机深度映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8360623/

相关文章:

java - UIManager.getDefauts() 和 UIManager.getLookAndFeelDefaults() 有什么区别?

java - 嵌套LinearLayout仅显示第一个View

java - JAXB 生成的对象到业务/域对象

java - 在推土机中映射抽象类

java - Java 中 POJO 的映射器

java - Dozer 从 Set<Object> 映射到 List<ENUM>

java - 如何在 selenium-java 中使用 xpath 获取表中禁用属性的大小

java - LG 设备上的 Android 6.0 (Marshmallow) 中的 new String(byte[]) 损坏?

java - 如何使用推土机映射将字符串常量发送到字段值?

java - javac生成的类文件中的方法顺序