如何使用 MapStruct 映射嵌套集合?
How to map nested collections using 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;
}
实体 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
中的对应集合。
谁能帮我指明正确的方向?
Mapstruct 的 Github 存储库中的 This example 准确展示了您正在尝试做的事情。
TL;DR 您需要为 SubMaster
(我们称之为 SubMasterMapper
)class 单独映射器,然后在 @Mapper(uses = { SubMasterMapper.class })
上添加注释 MasterMapper
:
public interface SubMasterMapper {
SubMasterDTO toDto(SubMaster entity);
}
@Mapper(uses = { SubMasterMapper.class })
public interface MasterMapper {
MasterDTO toDto(Master entity);
}
我有 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
中的对应集合。
谁能帮我指明正确的方向?
This example 准确展示了您正在尝试做的事情。
TL;DR 您需要为 SubMaster
(我们称之为 SubMasterMapper
)class 单独映射器,然后在 @Mapper(uses = { SubMasterMapper.class })
上添加注释 MasterMapper
:
public interface SubMasterMapper {
SubMasterDTO toDto(SubMaster entity);
}
@Mapper(uses = { SubMasterMapper.class })
public interface MasterMapper {
MasterDTO toDto(Master entity);
}