MapStruct-将具有不同对象类型的两个列表映射到具有另一种对象类型的第三个列表

时间:2019-07-22 16:49:31

标签: java mapping mapstruct

尝试使用mapstruct将两个列表映射到另一个列表时遇到问题。结构如下:

public class classA{
    List<ObjectA> list;
}

public class classB{
    List<ObjectB> list;
}

public class classC{
    List<ObjectC> list;
}

我需要将classC和classB的两个列表都映射到classA中的列表(从objectB和objectC到objectA的映射已经完成)。我尝试了以下方法:

@Mappings({
    @Mapping(target="list", source="obj1.list"),
    @Mapping(target="list", source="obj2.list")
})
classA map(classB obj1, classC obj2);

//the other mappers from objectC and objectB to objectA

这给了我编译错误。 有人可以帮我映射此列表吗?我听到了有关称为异常的注释参数的信息,但无法解决它的问题。

谢谢!

1 个答案:

答案 0 :(得分:0)

mapstruct无法完成。合并2个列表始终涉及业务逻辑。因此,您需要b编写自己的方法实现。我最近在MapStruct网页上写了一个FAQ项目。这适用于现有列表@MappingTarget。但是类似的推理也适用于将两个源列表合并到一个目标中。 http://mapstruct.org/faq/#why-is-it-not-possible-for-mapstruct-to-generate-implementations-for-iterable-stream-and-map-types-from-update-mappingtarget-methods