如何将派生列表添加到模型对象中

问题描述 投票:0回答:1

我想从实体映射时将派生列表添加到DTO /模型对象。例如,我有一个名为Company的实体类,该类具有雇员列表。我希望“公司模型”对象包含“雇员”列表以及“经理”雇员列表。 (这不是我的实际班级名称,但是我正在尝试做这种事情)。因此,我希望公司DTO拥有员工列表和经理列表,其中经理是员工的子集,该子集是通过过滤员工列表而得出的。

我尝试使用映射表达式和默认方法。但是,我需要使用EmployeeMapper,看来我无权访问映射器。

这是我尝试过的...

@Mapper(componentModel = "spring", uses = {EmployeeMapper.class})

公共接口CompanyMapper扩展IEntityMapper {

@Mapping(expression = "java(deriveManagers(model))", target = "managers")
EntityModel toModel(Company company);

default List<EmployeeModel> deriveManagers(Company company) {
    List<EmployeeModel> managers = new ArrayList<EmployeeModel>();

    company.getEmployees().forEach(nextEmployee -> {
      if (nextEmployee.getJobTitle().equals(JobTitle.MANAGER)) {
        managers.add(this.EmployeeMapper.toModel(nextEmployee);
      }
    });

    return managers;
}

}

mapstruct
1个回答
0
投票

我决定在DTO / Model对象而不是在Mapper中进行此处理。该列表可以作为CompanyModel对象中EmployeeModel对象的子集派生。因此,我认为这是导出此列表的正确位置。它实际上不是从实体到模型对象的映射,而是它是模型对象中的派生属性。

© www.soinside.com 2019 - 2024. All rights reserved.