属性值第二个字符是大写引发的血案Warning:(X,X) java: Unmapped target property: “vCpu“.

在这里插入图片描述

Warning:(X,X) java: Unmapped target property: "vCpu".

今天开发项目,将grpc的DTO实体转化本地的DTO实体,实体的样子是这样的


class CmdbProduct(
	val skuId: String,
	val fastoneStrategy: String?,
	val productLevel: String?,
	val fastoneRegion: String,
	val vendor: String?,
	val productType: ProductType,
	val systemPlatform: SystemPlatform,
	val fastoneModel: String,
	val fastoneFamily: String?,
	val vendorModel: String?,
	val payType: String?,
	val price: BigDecimal,
	val priceUnit: String?,
	val effectiveTime: String?,
	val fastoneType: String,
	val core: Int?,
	val vCpu: Int?,
	val memory: Int?,
	....
)

这里有个vCpu死活对不上,不能被解析,自动生成的代码也没有setvCpu的代码
在这里插入图片描述
网上的解释:

由于 MapStruct 在编译时运行,它可以比动态映射框架更快。如果映射不完整,它也可以生成错误报告——也就是说,如果不是所有的目标属性都被映射:
Warning:(X,X) java: Unmapped target property: "propertyName".

但是vCpu涉及到关键的代码,必须要要有。

后来同事指点,因为vCpu命名的问题,没有走驼峰。所以才会出现这个问题

一般JavaBean属性以小写字母开头,驼峰命名格式,相应的 getter/setter 方法是 get/set 接上首字母大写的属性名。例如:属性名为userName,其对应的getter/setter 方法是 getUserName/setUserName。

但是,还有一些特殊情况:

1、如果属性名的第二个字母大写,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,就是说大小写不变。例如属性名为uName,方法是getuName/setuName。

2、如果属性名的前两个字母是大写(一般的专有名词和缩略词都会大写),也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为URL,方法是getURL/setURL。

3、如果属性名的首字母大写,也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为Name,方法是getName/setName,这种是最糟糕的情况,会找不到属性出错,因为默认的属性名是name。

4、如果属性名以"is"开头,则getter方法会省掉get,set方法会去掉is。例如属性名为isOK,方法是isOK/setOK。

需要注意的是有些开发工具自动生成的getter/setter方法,并没有考虑到上面所说的特例情况,会导致bug的产生。

结论来了:在定义JavaBean的属性名时

1、尽量避免属性名的头两个字母中任意一个为大写

所以将转化的代码做了修改,此问题得以修复

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值