如何使用MapStruct映射嵌套集合? [英] How to map nested collections using MapStruct?

查看:3344
本文介绍了如何使用MapStruct映射嵌套集合?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有2个实体:



实体1:

 公开课硕士{

private int id;
私人Set< SubMaster> subMasters =新的HashSet< SubMaster>(0);
}

公共类SubMaster {
private int subId;
private String subName;
}

实体2:

 公共类MasterDTO {

private int id;
私人Set< SubMaster> subMasters =新的HashSet< SubMaster>(0);
}

公共类SubMasterDTO {
private int subId;
private String subName;
}

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

 公共接口MasterMapper {
MasterDTO toDto(主实体);
}

我能够成功映射 Master MasterDTO 。但是, Master 中的 SubMaster 的嵌套集合不会映射到 MasterDTO中的对应集合



有人可以在正确的方向帮助我吗?

解决方案

此示例在Mapstruct的Github中



TL; DR对于 SubMaster,您将需要一个单独的映射器。



TL code>(让我们将其称为 SubMasterMapper )类,然后放入 @Mapper(uses = {SubMasterMapper.class}) MasterMapper 上的$ c>批注:

 公共接口SubMasterMapper {
SubMasterDTO到Dto(SubMaster实体);
}

@Mapper(uses = {SubMasterMapper.class})
公共接口MasterMapper {
MasterDTO toDto(Master实体);
}


I have 2 entities:

Entity 1:

public class Master {

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

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

Entity 2:

public class MasterDTO {

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

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

I am using MapStruct Mapper to map values of POJO to another.

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

I am able to successfully map Master to MasterDTO. But, the nested collection of SubMaster in Master is not getting mapped to its counterpart in MasterDTO.

Could anyone help me in right direction?

解决方案

This example in Mapstruct's Github repo is an exact showcase for what you're trying to do.

TL;DR You'll need a separate mapper for the SubMaster (let's call it SubMasterMapper) class and then put a @Mapper(uses = { SubMasterMapper.class }) annotation on your MasterMapper:

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

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

这篇关于如何使用MapStruct映射嵌套集合?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆