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

MapStruct - Mapping two lists with different object types to a third list with another object type

我在尝试使用 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

这给了我编译错误。 有人可以帮我映射这个列表吗?我听说过一个名为 exception 的注释参数,但无法用它解决我的问题。

谢谢!

mapstruct 无法做到这一点。合并 2 个列表总是涉及业务逻辑。所以需要b自己写方法实现。我最近在 MapStruct 网页上写了一个常见问题解答项目。这适用于预先存在的列表@MappingTarget。但类似的推理适用于将 2 个源列表合并到一个目标中。 http://mapstruct.org/faq/#why-is-it-not-possible-for-mapstruct-to-generate-implementations-for-iterable-stream-and-map-types-from-update-mappingtarget-methods