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

MapStruct自定义Mapper未生效:UriTypeMapper未被ExtensionMapper调用

问题原因

你用到的FHIR源类org.hl7.fhir.r4.model.Extension已经内置了返回值为String类型的getUrl()方法,MapStruct做属性自动映射时,会优先匹配类型完全兼容的getter/setter组合:源端getUrl()返回String,刚好和目标类Extension的setUrl(String)入参类型匹配,因此MapStruct直接使用了这个现成的适配逻辑,不会去读取底层UriType类型的url成员字段,自然也就不会触发你定义的UriType到String的转换Mapper。

解决方法

显式指定映射关系,强制MapStruct读取源类的UriType类型的url对应字段,而不是使用自带的getUrl()方法:

@Mapper(uses={UriTypeMapper.class})
public interface ExtensionMapper {
    // 新增@Mapping注解强制绑定源字段和目标字段
    @Mapping(source = "urlElement", target = "url")
    Extension fhirtoMpi(org.hl7.fhir.r4.model.Extension extension);
}

这里urlElement是FHIR模型中UriType类型url字段的标准公开访问器对应属性名,添加该注解后,MapStruct会识别到源端要映射的是类型为UriType的字段,会自动调用你定义的UriTypeMapper#fhirToMpi方法完成类型转换,生成的实现类就会符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:48:01