2011-12-02 142 views
4

无法从源类映射深映射到目标类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; 
    } 
} 

Address类

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()); 

    } 
} 
+0

什么的依赖性@Mapping注释,我使用骆驼推土机部件 – Amar

回答

2

万一别人遇到同样的问题,我管理由这样做是为了纠正这一情况:

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中设置没有必要

1

它足以添加此注释源类(SourceEmployee):

@Mapping("this") 
private Address addr; 

事实上,“这个”的意思是“保持在同一节点上”;之后,houseName将在Address和TargetEmployee之间匹配。

;)

亚历