Could not set property ‘healhistorys‘ of ‘class com.bean.Pet‘ with value

一、报错

###Error querying database.
Cause: org.apache.ibatis.reflection.ReflectionException: Could not set property 'healhistorys' of 'class com.bean.Pet' with value ‘[com.bean.Healhistory@3a52dba3, com.bean.Healhistory@2a5c8d3f, com.bean.Healhistory@752325ad]’
Cause: org.apache.ibatis.reflection.ReflectionException: There is no setter for property named 'healhistorys' in 'class com.bean.Pet'
###The error may exist in com/mapping/HealhistoryMapper.xml
###The error may involve com.mapper.HealhistoryMapper.selectByPetid
###The error occurred while handling results
###SQL: select id, petId, health, checkdate from healhistory where petId = ?

根据上午报错我们可以知道它是再说:不能为 healhistorys 这个属性设置值,也没有为这个属性设置值的方法,还指明了出错的位置是在 com/mapping/HealhistoryMapper.xml 这个映射文件里。

二、分析

虽然是一个很简单的错误,但是对于自己这个新手来说,困扰了自己一下午时间都没能解决出来。开始自己一直以为是不是语法错了,然后一直看语法,也没能发现问题。
自己在bean层设置了这个属性,而且有setter和getter方法,所以排除了是没有setter方法的可能性。
而自己的错误原因是因为 property 属性名写错了:
由于代码是代码自动生成器生成的,bean层的属性没有使用驼峰式命名,自己还修改了一下属性,对应的代码都做了修改。唯有 healhistorys 这个属性的属性名写错了,可是xml文件的这个属性却显示的是绿色的。所以自己并没有过多的注意到是属性名写错了。
在这里插入图片描述
实体的属性名是下面这个,在xml文件中反而这个正确的属性名,它会报红,着实尴尬。
在这里插入图片描述

三、解决办法

  1. 属性名写错了。这个是最可能发生的原因,也是很难发现的细节错误。要解决这个错误,就需要将该property的值和对应的实体类里的属性名进行对应,或直接复制实体类里的属性名。
  2. 确实没有写setter方法,不过这个可能性一般较小。
  3. 语法错误。可对照一下语法结构,结果没问题,问题就在细节上。

四、感悟

感觉最麻烦的不是语法,因为语法是固定的,反而这些细节性的、很微小的书写问题,却是最能困扰初学者。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员_动次动次

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值