错误信息
前几天在写测试文件的时候,发现出现了下面的错误:
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,否则会出错。
这里我并不想更改属性变量名称,所以用了另一种方法解决的。
我发现,在自动生成 get
和 set
方法的时候,为 isXxx 属性(这里是 isPrivate)生成的方法名是 getPrivate()
和 setPrivate()
,这就不太对了,改回 getIsPrivate()
和 setIsPrivate()
后(所有其它类的调用也需要随着更改),就解决问题了。