首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MapStruct -多源集合映射

MapStruct -多源集合映射
EN

Stack Overflow用户
提问于 2022-10-21 10:12:30
回答 1查看 69关注 0票数 0

在将集合映射到多个源对象(它适用于单个源对象)时,MapStruct会遇到一个奇怪的问题。

代码语言:javascript
复制
@Mapper
public interface MyMapper {
    
    
    public MyVO mapEntityToVO(MyEntity entity); // WORKS

    public ArrayList<MyVO> mapEntityListToVOList(List<MyEntity> entities); // WORKS
            
    public MyVO mapEntityToVO(MyEntity entity, MySecondSource source); // WORKS
    
    public ArrayList<MyVO> mapEntityListToVOList(List<MyEntity> entities, MySecondSource source); // DOESN'T WORK (it produces empty list)

}

实施地图绘制程序的产出如下:

代码语言:javascript
复制
public class MyMapperImpl implements MyMapper {

    [...]

    @Override
    public ArrayList<MyVO> mapEntityListToVOList(List<MyEntity> entities) {
        if ( entities == null ) {
            return null;
        }

        ArrayList<MyVO> list = new ArrayList<MyVO>( entity.size() );
        for ( MyEntity entity : entities ) {
            list.add( mapEntityToVO ( entity ) );
        }

        return list;
    }

    [...]

    @Override
    public ArrayList<MyVO> mapEntityListToVOList(List<MyEntity> entities, MySecondSource source) {
       if ( entities == null && source == null) {
           return null;
       }

       ArrayList<MyVO> arrayList = new ArrayList<MyVO>();

       return arrayList;
    }
}

如您所见,列表中没有填充多个源。有正确的方法让它起作用吗?

EN

回答 1

Stack Overflow用户

发布于 2022-10-26 17:03:28

如果要将附加参数传递给其他映射方法,则应该使用@Context对其进行注释。注释是在1.2版中引入的,更多信息可以在MapStruct文档中找到。

您的方法应声明为:

代码语言:javascript
复制
public ArrayList<MyVO> mapEntityListToVOList(List<MyEntity> entities, @Context MySecondSource source);

此外,应该添加一个代理方法来将MapStruct指向正确的单个对象映射方法。

代码语言:javascript
复制
default MyVO mapContext(MyEntity entity, @Context MySecondSource source) {
    return mapEntityToVO(entity, source);
}

如果没有代理方法,MapStruct将生成一个用于映射单个对象的新方法,因为现有的对象不包含标记为@Context的第二个参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74152095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档