2016-11-14 4 views
1

私は支店のセットを持つ会社のエンティティを持っています。エンティティをDTOに変換するとき、私はまた、modelmapperを使用して、枝のセットをBranchDTOのセットに変換したいと思っています。入れ子コレクション用のモデルメーカ

マイエンティティ:

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<>に変換できますので、実際に設定する必要はありません。さらに、プロパティは等しいと呼ばれ、同じ順序で動作するはずです。


私が試したし、それが完璧に動作します:

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(企業ID = 10、のcompanyName =会社名、住所=住所、支店= [BranchDTO(branchId = 1、branchName = Branch Name)])

modelmapperが機能するように見えるので、SetBranch要素が空であるかどうかを確認してください。

関連する問題