org.apache.ibatis.ognl.NoSuchPropertyException解决方法

错误信息

前几天在写测试文件的时候,发现出现了下面的错误:

org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause: org.apache.ibatis.builder.BuilderException: Error evaluating expression ‘et.isPrivate != null’. Cause: org.apache.ibatis.ognl.NoSuchPropertyException: im.my.project.mysql.Task.isPrivate
### Cause: org.apache.ibatis.builder.BuilderException: Error evaluating expression ‘et.isPrivate != null’. Cause: org.apache.ibatis.ognl.NoSuchPropertyException: im.my.project.mysql.Task.isPrivate

解决方案

本来以为数据库里的信息出错了,或者可能是读取数据出错,结果反复检查了好几遍数据库,才确保不是数据库的问题。后来,gg 了一下,看到下面的答案,感觉非常好(记得科学上网哈)

https://gitee.com/baomidou/mybatis-plus/issues/IINUI

它里面说:

数据库表中表达是与否概念的字段,使用的是 is_xxx 的方式命名。实体类中对应的字段是isXxx。

isXxx 属性 属于不规范的写法,这样会误认为 isXxx 属性 xx 的 boolean 类型,请更正命名 或者get 方法为 getIsXxx

啥意思呢,就是说,属性不要设为isXxx,否则会出错。

这里我并不想更改属性变量名称,所以用了另一种方法解决的。

我发现,在自动生成 getset 方法的时候,为 isXxx 属性(这里是 isPrivate)生成的方法名是 getPrivate()setPrivate() ,这就不太对了,改回 getIsPrivate()setIsPrivate() 后(所有其它类的调用也需要随着更改),就解决问题了。

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值