【问题标题】:How to map nested collections using MapStruct?如何使用 MapStruct 映射嵌套集合?
【发布时间】:2018-01-30 12:49:18
【问题描述】:

我有 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);
}

我能够成功地将Master 映射到MasterDTO。但是,Master 中的 SubMaster 的嵌套集合没有映射到 MasterDTO 中的对应对象。

谁能帮助我正确的方向?

【问题讨论】:

  • 您使用的是1.2.0 版本吗?如果是,那么 MapStruct 应该会自动为您创建所有内容。此外,您的界面上还缺少@Mapper。您在MasterDTO 中的集合也是SubMaster 而不是SubMasterDTO(我不确定您的代码中是否也有这样的设置)。

标签: java collections mapstruct


【解决方案1】:

Mapstruct 的 Github 存储库中的This example 准确展示了您正在尝试做的事情。

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

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

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

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 2018-09-15
    • 2016-10-14
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 2020-12-12
    相关资源
    最近更新 更多