2016-11-14 89 views
1

我有公司實體與分支機構。當我將實體轉換爲DTO時,我也想使用modelmapper將一組分支轉換成BranchDTO的集合。modelmaper爲嵌套集合

我的實體:

public class Company { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "company_id") 
    private long companyId; 

    @Column(name = "company_name") 
    private String companyName; 

    @Column(name = "address") 
    private String address; 

    @OneToMany 
    @JoinColumn(name="branchcompany_id", referencedColumnName="company_id") 
    private Set<Branch> branches; 

    ...getters setters.. 

} 

public class Branch { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "branch_id") 
    private long branchId; 

    @Column(name = "branch_name") 
    private String branchName; 
    ... 
} 

我想這個實體的BranchDTO

我的DTO集合一起轉移到CompanyDTO

public class CompanyDTO { 
    private long companyId; 

    private String companyName; 

    private String address; 

    private List<BranchDTO> branches; 
    ... 
} 


public class BranchDTO { 
    private long branchId; 

    private String branchName; 
    ... 
} 

我嘗試使用屬性地圖 - 但不能找出確切的語法。以下給出空白BranchDTO列表。

CompanyDTO newCompanyDTO = modelMapper.map(company, CompanyDTO.class); 

任何幫助,非常感謝。

回答

0

ModelMapper可以將List<>轉換爲Set<>,所以你真的不需要做任何配置。 Furhtermore,這些屬性被稱爲平等,並且應該以相同的順序工作。


我試着和它完美的作品:

Company company = new Company(); 
Branch branch = new Branch(); 
branch.setBranchId(1L); 
branch.setBranchName("Branch Name"); 
company.setBranches(new HashSet<>(Arrays.asList(branch))); 
company.setAddress("Address"); 
company.setCompanyId(10L); 
company.setCompanyName("Company Name"); 

ModelMapper mapper = new ModelMapper(); 
CompanyDTO companyDto = mapper.map(company, CompanyDTO.class); 

System.out.println(companyDto); 

輸出

CompanyDTO(companyId = 10,公司名稱=公司名稱,地址=地址,分支= [BranchDTO(branchId = 1,branchName = Branch Name)])

因此請檢查SetBranch元素是否爲空,因爲modelmapper似乎正常工作。