2

私は一連の支店を持つ Company エンティティを持っています。エンティティを DTO に変換するときに、ブランチのセットをモデルマッパーを使用するセットに変換することも必要です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;
    ...
}

CompanyDTOこのエンティティをコレクションとともに転送したいBranchDTO

私のDTO:

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

どんな助けでも大歓迎です。

4

1 に答える 1

1

ModelMapper は aList<>を に変換できるため、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(companyId=10、companyName=会社名、address=住所、branches=[BranchDTO(branchId=1, branchName=支店名)])

Set:Branch要素が空かどうかを確認してくださいmodelmapper。動作しているようです。

于 2016-11-14T12:20:43.450 に答える