You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Iterable<Other>映射到目标对象的others集合属性?

结论

你给出的Mapper写法默认不能实现需求,需要补充映射规则配置,以下是具体说明:


问题原因

MapStruct默认会将入参的字段和目标类的字段逐一匹配,你当前的写法没有指定「整个Iterable入参映射到others属性」的规则,因此生成的实现类不会自动完成赋值操作。


正确写法

你只需要补充@Mapping注解明确映射关系即可,MapStruct原生支持Iterable到List的自动类型转换,无需手动写转换逻辑:

@Mapper
interface SomeMapper {
    // 明确指定将source参数整体映射到目标对象的others属性
    @Mapping(target = "others", source = "source")
    Some mapOthers(Iterable<? extends Other> source, @MappingTarget Some target);
}

注意事项

  • 确保Some类的others属性有可访问的setter方法,或配置MapStruct使用字段访问策略(例如添加lombok.@Setter注解,或在@Mapper中配置access = AccessType.FIELD)
  • 如果Other类需要字段映射而非直接赋值,你可以在同一个Mapper接口中自定义Other类型的映射方法,MapStruct会自动调用

内容的提问来源于stack exchange,提问作者Jin Kwon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:15:03