There is no getter for property named '__frch_criterion_1' in...

MyBatis中增加分页,发现报这个错。研究了很久,记录一下,权当抛砖引玉吧。

先把错误贴出来:

org.apache.ibatis.reflection.ReflectionException: There is no getter for property named '__frch_criterion_1' in 'class com.firework.xxxx.entity.Criteria'
	at org.apache.ibatis.reflection.Reflector.getGetInvoker(Reflector.java:409)
	at org.apache.ibatis.reflection.MetaClass.getGetInvoker(MetaClass.java:164)
	at org.apache.ibatis.reflection.wrapper.BeanWrapper.getBeanProperty(BeanWrapper.java:162)
	at org.apache.ibatis.reflection.wrapper.BeanWrapper.get(BeanWrapper.java:49)
	at org.apache.ibatis.reflection.MetaObject.getValue(MetaObject.java:122)
	at org.apache.ibatis.reflection.MetaObject.metaObjectForProperty(MetaObject.java:145)
	at org.apache.ibatis.reflection.MetaObject.getValue(MetaObject.java:115)
	at org.apache.ibatis.scripting.defaults.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:79)
	at com.firework.xxxx.plugins.PaginationInterceptor.count(PaginationInterceptor.java:148)
	at com.firework.xxxx.plugins.PaginationInterceptor.intercept(PaginationInterceptor.java:104)
	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
	at com.sun.proxy.$Proxy64.prepare(Unknown Source)
	at org.apache.ibatis.executor.ReuseExecutor.prepareStatement(ReuseExecutor.java:89)
	at org.apache.ibatis.executor.ReuseExecutor.doQuery(ReuseExecutor.java:59)
	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)
	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:434)
	at com.sun.proxy.$Proxy32.selectList(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:239)
	at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:126)
	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:68)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53)

从报错中提取出来的信息是,未定义“__frch_criterion_1”,觉得奇怪,我从没有定义这个啊,于是百度了一下,

发现这类问题还是很多的。于是开启了大海捞针模式,终于功夫不负苦心人,找到了这样一篇博客,

http://www.fx114.net/qa-29-326871.aspx

大意是:

创建的newBoundSql相比较从MappedStatement中取得的boundSql丢失了additionalParameters

终于有点眉目了,但是这里并没有说具体是哪里丢失了,只有继续分析错误信息。

意思是:PaginationInterceptor类中中count方法148行报错,然后进行一系列的分析。

首先,获取 boundSql.getParameterMappings();

看看输出的信息,发现确实是需要的信息,

贴出148行左右的源码。

 加上注释的那段代码,再一执行,发现问题解决了。

这个问题花了我足足半天时间才解决,特意记录一下整个问题解决的过程。

转载于:https://my.oschina.net/justplay/blog/794965

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值