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

MapStruct映射报错:源参数不存在rDAccount属性问题求助

MapStruct映射报错:No property named "rDAccount" exists in source parameter(s)

问题原因

字段rDAccount的命名不符合标准JavaBean驼峰规范,导致Lombok生成的getter方法为getRDAccount(),而MapStruct默认按照JavaBean规范解析属性名时,会将该getter对应的属性识别为RDAccount,而非你在@Mapping中指定的rDAccount,因此触发属性不存在的错误。

解决方案

方案一:修改Mapper中的source属性名

直接将@Mapping中的source值改为MapStruct识别的RDAccount:

@Mapper(componentModel = "spring")
public interface CustomMapper {

    @Mapping(source = "RDAccount", target = "xfaceRDAccount")
    TargetClass mapToTarget(SourceClass sourceClass);
}

方案二:调整字段名至标准驼峰格式

将SourceClass中的字段名改为标准驼峰格式(首字母小写,后续单词首字母大写),比如rdAccount,这样Lombok生成的getter为getRdAccount(),MapStruct能直接匹配属性名:

@Data
public class SourceClass {
    private String rdAccount;
}

同时同步修改Mapper中的source配置:

@Mapping(source = "rdAccount", target = "xfaceRDAccount")

方案三:配置MapStruct的命名策略

在Mapper接口上指定accessNamingStrategy属性,让MapStruct直接根据getter方法名去掉get前缀后匹配属性名,无需严格遵循驼峰规范:

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.accessor.GetterAccessorNamingStrategy;

@Mapper(componentModel = "spring", accessNamingStrategy = GetterAccessorNamingStrategy.class)
public interface CustomMapper {

    @Mapping(source = "rDAccount", target = "xfaceRDAccount")
    TargetClass mapToTarget(SourceClass sourceClass);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:15:38