首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原因: org.apache.ibatis.ognl.NoSuchPropertyException:

原因: org.apache.ibatis.ognl.NoSuchPropertyException:
EN

Stack Overflow用户
提问于 2018-05-27 23:01:54
回答 2查看 3.7K关注 0票数 2

我的项目使用mybatis插件,偶尔会出现以下错误!

我使用的mybatis插件tk.mybatis.mapper版本3.3.0调用映射器接口

代码语言:javascript
复制
tk.mybatis.mapper.common.Mapper.updateByExampleSelective(@Param("record") T var1, @Param("example") Object var2);

示例:

代码语言:javascript
复制
 public interface EntiyObjectMapper extends Mapper<EntiyObject>{

 }

我调用:

代码语言:javascript
复制
Example example = new Example(EntiyObject.class);
entiyObjectMapper.updateByExampleSelective(entiyObject,example)

根异常堆栈

代码语言:javascript
复制
 Caused by: org.apache.ibatis.ognl.NoSuchPropertyException: com.xxx.xxx.batch.model.pojo.XXXXXXXInfo.masFlag

此EntiyObject属性magFlag存在,99%的情况下不会出现此错误

我在google,mybatis官网和ogln官网上都没有找到类似的问题。

我找不到这个问题的具体原因!

下面是完整的异常堆栈:

代码语言:javascript
复制
[pool-9-thread-5] 2018-05-26 16:05:01.677 [ERROR] [CaseProcess.java:65] - XXXXXXXXX handle failed:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'record.masFlag != null'. Cause: org.apache.ibatis.ognl.NoSuchPropertyException: com.xxx.xxx.batch.model.pojo.XXXXXXXInfo.masFlag
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:371)
at com.sun.proxy.$Proxy20.update(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:254)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:55)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53)
at com.sun.proxy.$Proxy30.updateByExampleSelective(Unknown Source)
at com.xxx.xxx.batch.center.service.BaseDataService.insertXXXXXXXInfo(BaseDataService.java:163)
at com.xxx.xxx.batch.center.service.BaseDataService.subsideBo(BaseDataService.java:44)
at com.xxx.xxx.batch.center.service.XXXX.XXXXCaseService.execute(XXXXCaseService.java:47)
at com.xxx.xxx.batch.center.service.XXXX.XXXXCaseService$$FastClassBySpringCGLIB$$39bfb230.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:721)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:656)
at com.xxx.xxx.batch.center.service.XXXX.XXXXCaseService$$EnhancerBySpringCGLIB$$608b51ee.execute(<generated>)
at com.xxx.xxx.batch.center.RoutingService.execute(RoutingService.java:70)
at com.xxx.xxx.batch.center.CaseProcess.process(CaseProcess.java:45)
at com.xxx.xxx.batch.mq.MQAccessBuilder$3.consume(MQAccessBuilder.java:101)
at com.xxx.xxx.batch.mq.ThreadPoolConsumer$1.run(ThreadPoolConsumer.java:94)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)



Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'record.masFlag != null'. Cause: org.apache.ibatis.ognl.NoSuchPropertyException: com.xxx.xxx.batch.model.pojo.XXXXXXXInfo.masFlag
at org.apache.ibatis.scripting.xmltags.OgnlCache.getValue(OgnlCache.java:46)
at org.apache.ibatis.scripting.xmltags.ExpressionEvaluator.evaluateBoolean(ExpressionEvaluator.java:32)
at org.apache.ibatis.scripting.xmltags.IfSqlNode.apply(IfSqlNode.java:34)
at org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33)
at org.apache.ibatis.scripting.xmltags.TrimSqlNode.apply(TrimSqlNode.java:55)
at org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33)
at org.apache.ibatis.scripting.xmltags.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:41)
at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:279)
at org.apache.ibatis.executor.statement.BaseStatementHandler.<init>(BaseStatementHandler.java:64)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.<init>(PreparedStatementHandler.java:39)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.<init>(RoutingStatementHandler.java:45)
at org.apache.ibatis.session.Configuration.newStatementHandler(Configuration.java:502)
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:47)
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:115)
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75)
at sun.reflect.GeneratedMethodAccessor636.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63)
at com.sun.proxy.$Proxy73.update(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:170)
at sun.reflect.GeneratedMethodAccessor633.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)
... 25 more



Caused by: org.apache.ibatis.ognl.NoSuchPropertyException: com.xxx.xxx.batch.model.pojo.XXXXXXXInfo.masFlag
at org.apache.ibatis.ognl.ObjectPropertyAccessor.getProperty(ObjectPropertyAccessor.java:151)
at org.apache.ibatis.ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2420)
at org.apache.ibatis.ognl.ASTProperty.getValueBody(ASTProperty.java:114)
at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258)
at org.apache.ibatis.ognl.ASTChain.getValueBody(ASTChain.java:141)
at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258)
at org.apache.ibatis.ognl.ASTNotEq.getValueBody(ASTNotEq.java:50)
at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258)
at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:494)
at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:458)
at org.apache.ibatis.scripting.xmltags.OgnlCache.getValue(OgnlCache.java:44)
... 49 more

请帮帮我!

EN

回答 2

Stack Overflow用户

发布于 2019-05-02 09:39:17

对于将来的参考,这是一个已知的问题。

请参阅https://github.com/mybatis/mybatis-3/issues/623

TL;DR

  • 升级到MyBatis 3.4.2+ Java 1.8.0_25+应该可以解决此问题。
  • 如果您无法升级,则可能存在workaround.
票数 1
EN

Stack Overflow用户

发布于 2018-06-02 02:02:50

这个错误看起来很简单。参数对象中不存在属性masFlag

com.xxx.xxx.batch.model.pojo.XXXXXXXInfo是否具有该属性和/或getter & setter?

否则,发布< mapper >。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50553456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档