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

gsc*_*ial 7 java collections mapstruct

我有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;
}
Run Code Online (Sandbox Code Playgroud)

实体2:

public class MasterDTO {

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

public class SubMasterDTO{
    private int subId;
    private String subName;
}
Run Code Online (Sandbox Code Playgroud)

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

public interface MasterMapper{
    MasterDTO toDto(Master entity);
}
Run Code Online (Sandbox Code Playgroud)

我能够成功映射MasterMasterDTO。但是,SubMasterin 的嵌套集合Master未映射到in中的对应集合MasterDTO

谁能在正确的方向帮助我?

jan*_*nis 10

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

TL; DR您将需要一个单独的mapper来用作SubMaster(让我们称之为SubMasterMapper)类,然后@Mapper(uses = { SubMasterMapper.class })在您的上添加一个注释MasterMapper

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

@Mapper(uses = { SubMasterMapper.class })
public interface MasterMapper {
    MasterDTO toDto(Master entity);
}
Run Code Online (Sandbox Code Playgroud)