当前位置: 代码迷 >> 综合 >> org.apache.ibatis.ognl.NoSuchPropertyException解决方法
  详细解决方案

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

热度:93   发布时间:2023-12-15 17:10:43.0

错误信息

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

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() 后(所有其它类的调用也需要随着更改),就解决问题了。

  相关解决方案