mybatis 并发执行时出现NullPointerException详解编程语言

异常堆栈如下:

### Cause: java.lang.NullPointerException 
        at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23) 
        at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:147) 
        at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:134) 
        at sun.reflect.GeneratedMethodAccessor725.invoke(Unknown Source) 
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
        at java.lang.reflect.Method.invoke(Method.java:597) 
        at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:355) 
        ... 87 more 
Caused by: java.lang.NullPointerException 
        at org.apache.ibatis.reflection.property.PropertyTokenizer.<init>(PropertyTokenizer.java:27) 
        at org.apache.ibatis.reflection.MetaObject.getValue(MetaObject.java:114) 
        at org.apache.ibatis.builder.xml.dynamic.DynamicContext$ContextMap.get(DynamicContext.java:89) 
        at org.apache.ibatis.builder.xml.dynamic.DynamicContext$ContextAccessor.getProperty(DynamicContext.java:107) 
        at org.apache.ibatis.ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1657) 
        at org.apache.ibatis.ognl.ASTProperty.getValueBody(ASTProperty.java:92) 
        at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170) 
        at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:210) 
        at org.apache.ibatis.ognl.ASTNotEq.getValueBody(ASTNotEq.java:49) 
        at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170) 
        at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:210) 
        at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:333) 
        at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:413) 
        at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:395) 
        at org.apache.ibatis.builder.xml.dynamic.OgnlCache.getValue(OgnlCache.java:42) 
        at org.apache.ibatis.builder.xml.dynamic.ExpressionEvaluator.evaluateBoolean(ExpressionEvaluator.java:32) 
        at org.apache.ibatis.builder.xml.dynamic.IfSqlNode.apply(IfSqlNode.java:30) 
        at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:29) 
        at org.apache.ibatis.builder.xml.dynamic.TrimSqlNode.apply(TrimSqlNode.java:42) 
        at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:29) 
        at org.apache.ibatis.builder.xml.dynamic.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:37) 
        at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:241) 
        at org.apache.ibatis.executor.statement.BaseStatementHandler.<init>(BaseStatementHandler.java:61) 
        at org.apache.ibatis.executor.statement.PreparedStatementHandler.<init>(PreparedStatementHandler.java:36) 
        at org.apache.ibatis.executor.statement.RoutingStatementHandler.<init>(RoutingStatementHandler.java:42) 
        at org.apache.ibatis.session.Configuration.newStatementHandler(Configuration.java:348) 
        at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:43) 
        at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:108) 
        at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75) 
        at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:145) 
        ... 92 more

这是mybatis依赖包OGNL 2.6.9的一个bug,可以通过升级mybatis版本到 3.3.0来解决此问题。

mybatis官方issue说明: https://github.com/mybatis/mybatis-3/issues/224

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/10100.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论