使用 MapStruct 1.2.0 映射嵌套集合属性

Mapping nested collection attribute with MapStruct 1.2.0

我正在尝试使用 MapStruct 1.2.0 映射以下属性,基于以下 类

ClassA {
String id
List <Object1> artefacts
}

DTOClassA{
String id
List <Object2> artefacts
}

Object1 {
String id
String serialNo
}

Object2 {
String id
String serialNo
}

在我的接口映射器中,如何将 SerialNo 从 ClassA 人工制品列表映射到 serialNo DTOClassA 人工制品列表?我已经尝试了以下但我没有工作:

@Mapping(target="artefacts.serialNo", source="artefacts.serialNo")
ClassA mapToDto(DTOClassA dto)

感谢任何帮助

使用 MapStruct v1.3.0 并设置以下 Mapper

@Mapper
public interface TestSOMapper {
    ClassA mapToDto(DTOClassA dto);
}

导致自动生成以下 MapperImpl

...
protected Object1 object2ToObject1(Object2 object2) {
    if ( object2 == null ) {
        return null;
    }

    Object1 object1 = new Object1();

    object1.setId( object2.getId() );
    object1.setSerialNo( object2.getSerialNo() );

    return object1;
}
...

这就是你想要的,不是吗?如果属性名称不匹配,我建议为 Object1 > Object2 映射编写第二个映射器。

希望对您有所帮助!