Reputation: 619
I am having Company entity with set of branches. When I convert entity into DTO, I also want to convert set of branches into into set of BranchDTO
using modelmapper.
My entities:
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;
...
}
I want to transfer this entity into CompanyDTO
along with collection of BranchDTO
My DTOs:
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;
...
}
I tried using property map - but could not figure out exact syntax. Following gives be blank BranchDTO
list.
CompanyDTO newCompanyDTO = modelMapper.map(company, CompanyDTO.class);
Any help is greatly appreciated.
Upvotes: 2
Views: 3659
Reputation: 16086
ModelMapper can convert a List<>
to Set<>
so really you don't need to do any configuration. Furhtermore, the properties are called equal and in the same order it should work.
I've tried and it works perfectly:
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);
Output:
CompanyDTO(companyId=10, companyName=Company Name, address=Address, branches=[BranchDTO(branchId=1, branchName=Branch Name)])
So check the Set
: Branch
elements are empty or not because modelmapper
seems to work.
Upvotes: 1