Mybatis运行时报错 Error querying database. Cause: java.lang.RuntimeException: MemberAccess implementat

最近在看mybatis的源码,因为之前学习mybatis直接就和spring整合使用了,平时也就写写mapper文件之类的,对mybatis的使用并不是很了解,于是打算自己从使用到源码重头整理一遍,刚搭建好环境,写了一个测试,就出现了这个错误。错误的详细信息如下:

Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.RuntimeException: MemberAccess implementation must be provided!
### Cause: java.lang.RuntimeException: MemberAccess implementation must be provided!
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
	at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:139)
	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:76)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
	at com.sun.proxy.$Proxy3.executeQuery(Unknown Source)
	at stu.kgh.mybatis.HelloWorld.main(HelloWorld.java:27)
Caused by: java.lang.RuntimeException: MemberAccess implementation must be provided!
	at ognl.OgnlContext.<init>(OgnlContext.java:140)
	at ognl.OgnlContext.<init>(OgnlContext.java:110)
	at ognl.Ognl.createDefaultContext(Ognl.java:178)
	at org.apache.ibatis.scripting.xmltags.OgnlCache.getValue(OgnlCache.java:43)
	at org.apache.ibatis.scripting.xmltags.TextSqlNode$BindingTokenParser.handleToken(TextSqlNode.java:77)
	at org.apache.ibatis.parsing.GenericTokenParser.parse(GenericTokenParser.java:78)
	at org.apache.ibatis.scripting.xmltags.TextSqlNode.apply(TextSqlNode.java:51)
	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:292)
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
	... 6 more

在网上找了好多,关于 Error querying database. 这个错误出现的可能性很多,但是提到MemberAccess implementation must be provided!就几乎没有答案了。

解决方法很简单,就是ognl的包的版本不对,最开始使用的是

<dependency>
	<groupId>ognl</groupId>
	<artifactId>ognl</artifactId>
	<version>3.2.6</version>
</dependency>

换成2.7.3这个版本就可以了。代码如下:

<dependency>
	<groupId>ognl</groupId>
	<artifactId>ognl</artifactId>
	<version>2.7.3</version>
</dependency>



猜你喜欢

转载自blog.csdn.net/king_kgh/article/details/79817995