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

原创
2016/11/27 14:29
阅读数 7.5K

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行左右的源码。

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

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

展开阅读全文
打赏
0
1 收藏
分享
加载中
东北的冬博主

引用来自“GOINGTO”的评论

那个我没有看太懂诶 可以私聊你么
乐意效劳❤
2017/08/30 14:32
回复
举报
那个我没有看太懂诶 可以私聊你么
2017/08/30 14:27
回复
举报
楼主你这篇文章可算帮了我大忙了。。。
花了一天时间没有搞定的问题,看你这个搞定了,哎,一把泪。。。。
我这里是想拦截mybatis的查询语句,插入租户id信息!啊,太感谢了,终于搞定了!!!
2017/02/17 17:16
回复
举报
更多评论
打赏
3 评论
1 收藏
0
分享
返回顶部
顶部