2011-12-02 78 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之間匹配。

;)

亞歷