Java Mapstruct-从多个集合映射到单个集合

Java Mapstruct-从多个集合映射到单个集合,java,mapstruct,Java,Mapstruct,使用MapStruct,我的源对象中有两个集合,其中包含稍微不同的对象。我想将这两个集合中的对象映射到一个公共类型,然后将它们全部插入到一个集合中。如下所示: List<UserNumber> listsToDtoList(List<PhoneNumber> phoneNumbers, List<FaxNumber> faxNumbers); UserNumber phoneToPhoneDto(PhoneNumber phone); UserNumber

使用MapStruct,我的源对象中有两个集合,其中包含稍微不同的对象。我想将这两个集合中的对象映射到一个公共类型,然后将它们全部插入到一个集合中。如下所示:

List<UserNumber> listsToDtoList(List<PhoneNumber> phoneNumbers, List<FaxNumber> faxNumbers);

UserNumber phoneToPhoneDto(PhoneNumber phone);
UserNumber faxToPhoneDto(FaxNumber fax);
List listsToDtoList(列出电话号码、传真号码);
UserNumber phoneToPhoneDto(PhoneNumber phone);
用户号码传真至(传真号码传真);

使用MapStruct最简单的方法是什么?

这样我就可以从我的
源对象
创建一个映射(不写
列表电话号码,列表传真号码);

因此,大致可以这样说:

@Mapping( target = "userNumbers", source = "phoneNumbers" )
Target map( Source source );

@AfterMapping // will be applied in the final part of the previous method
default void map ( Source source, @MappingTarget Target target ) {
 target.getUserNumbers().addAll(source.getFaxNumbers());
}

这很接近-但是生成的代码名为
.clear()在添加传真号码之前,请在目标集合上执行
。目前,我使用了一个@AfterMapping,但使用的是一个自定义方法,该方法仅将传真号码添加到目标集合。如果您对如何使用解决方案有任何建议,但无法清除现有集合,我很想听听!嗯,忘了这个目前,这是唯一的选择。请留意。请添加评论或对该问题进行投票。我将调整我的答案以反映您的解决方案。