如何使用MapStruct映射嵌套集合?

2022-09-03 05:10:14

我有2个实体:

实体 1:

public class Master {

    private int id;
    private Set<SubMaster> subMasters= new HashSet<SubMaster>(0);
}

public class SubMaster{
    private int subId;
    private String subName;
}

实体 2:

public class MasterDTO {

    private int id;
    private Set<SubMaster> subMasters= new HashSet<SubMaster>(0);
}

public class SubMasterDTO{
    private int subId;
    private String subName;
}

我正在使用MapStruct Mapper将POJO的值映射到另一个值。

public interface MasterMapper{
    MasterDTO toDto(Master entity);
}

我能够成功地映射到.但是,in 的嵌套集合未映射到 中的对应集合。MasterMasterDTOSubMasterMasterMasterDTO

任何人都可以帮助我朝着正确的方向前进吗?


答案 1

Mapstruct 的 Github 存储库中的此示例是您尝试执行的操作的确切展示。

TL;DR 您需要为(我们称之为)类使用一个单独的映射器,然后在您的 :SubMasterSubMasterMapper@Mapper(uses = { SubMasterMapper.class })MasterMapper

public interface SubMasterMapper {
    SubMasterDTO toDto(SubMaster entity);
}

@Mapper(uses = { SubMasterMapper.class })
public interface MasterMapper {
    MasterDTO toDto(Master entity);
}

答案 2