记录一次项目中遇到的问题:Criteria.valid

项目中报错'Error querying database...Criteria.valid',问题指向自动生成的example类。排查发现Criteria类中只有isValid方法,而mapper.xml中却调用了valid字段。错误日志提及PageHelper分页插件,但业务代码未使用。目前问题偶发,尚未复现,Mybatis版本2.0.0,PageHelper版本5.1.0。
摘要由CSDN通过智能技术生成

记录一次项目中遇到的问题:Criteria.valid

起因

项目在生产环境中有接口报了以下的错:
Error querying database. Cause: org.apache.ibatis.builder.BuilderException: Error evaluating expression ‘criteria.valid’. Cause: org.apache.ibatis.ognl.NoSuchPropertyException: cn.com.xxx.xxx.dao.ibatis.Critirias$Criteria.valid

该接口功能为:调用外部接口查询额度,根据返回的额度更改明细表,并且计算总额更新汇总表信息,然后将汇总后额度信息推送给其他系统。

明细表大概有400万条数据左右
汇总表大概有十几万条数据左右

排查原因

首先,我是先看了报错的信息,发现所有的错误都指向Mybatis代码自动生成的example类中的Criteria.valid,于是我打开该类,发现了以下字段:

/**
 * 当前查询实例
 */
protected List<Criteria> oredCriteria;

于是,我又去看了对应的Mapper.xml,发现每次在调用selectByExample和updateExample方式时,执行过程是这样的:

1. 判断example不等于null
2. 循环example.oredCriteria
3. 判断当前criteria是否为空

到了第三步时,本次异常指向的Criteria.valid就出现了:

<if test="criteria.valid">

但当我返回example类中寻找valid字段时,发现并没有这个字段,只有一个isValid方法,而完整的异常日志中,确实也提到了这个方法:

public boolean 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值