JBOSS 点滴

丰丰的博客

MyBatis出现org.apache.ibatis.executor.ExecutorException异常

DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- Opening JDBC Connection
DEBUG [main] 
- Created connection 29011566.
DEBUG [main] 
- Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@1baae6e]
DEBUG [main] 
- ==>  Preparing: select * from user where username like concat(?,'%') 
DEBUG [main] - ==> Parameters: 张(String)

org.apache.ibatis.exceptions.PersistenceException: 
### 
Error querying database.  Cause: org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'username' from result set.  Cause: java.sql.SQLException: Cannot convert value '张三' from column 2 to TIMESTAMP.
### The error may exist in sqlmap/User.xml
### The 
error may involve test.findUserByName3
### The 
error occurred while handling results
### SQL: 
select * from user where username like concat(?,'%')
### Cause: org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'username' from result set.  Cause: java.sql.SQLException: Cannot convert value '张三' from column 2 to TIMESTAMP.

    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:
30)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:
149)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:
140)
    at com.swjd.test.B.test2(B.java:
40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43)
    at java.lang.reflect.Method.invoke(Method.java:
497)
    at org.junit.runners.model.FrameworkMethod$
1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:
12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:
47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:
17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:
325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:
78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:
57)
    at org.junit.runners.ParentRunner$
3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$
1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:
288)
    at org.junit.runners.ParentRunner.access$
000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$
2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:
363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:
137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:
68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:
47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:
242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:
70)
Caused by: org.apache.ibatis.executor.result.ResultMapException: 
Error attempting to get column 'username' from result set.  Cause: java.sql.SQLException: Cannot convert value '张三' from column 2 to TIMESTAMP.
    at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:83)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createUsingConstructor(DefaultResultSetHandler.java:
671)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createByConstructorSignature(DefaultResultSetHandler.java:
654)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:
618)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:
591)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:
397)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:
354)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:
328)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:
301)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:
194)
    at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:
65)
    at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:
79)
    at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:
63)
    at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:
324)
    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:
147)
     
24 more
Caused by: java.sql.SQLException: Cannot convert value 
'张三' from column 2 to TIMESTAMP.
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:
956)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:
926)
    at com.mysql.jdbc.ResultSetRow.getTimestampFast(ResultSetRow.java:
1328)
    at com.mysql.jdbc.ByteArrayRow.getTimestampFast(ByteArrayRow.java:
124)
    at com.mysql.jdbc.ResultSetImpl.getTimestampInternal(ResultSetImpl.java:
6669)
    at com.mysql.jdbc.ResultSetImpl.getTimestamp(ResultSetImpl.java:
5988)
    at com.mysql.jdbc.ResultSetImpl.getTimestamp(ResultSetImpl.java:
6026)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43)
    at java.lang.reflect.Method.invoke(Method.java:
497)
    at org.apache.ibatis.logging.jdbc.ResultSetLogger.invoke(ResultSetLogger.java:
69)
    at com.sun.proxy.$Proxy6.getTimestamp(Unknown Source)
    at org.apache.ibatis.type.DateTypeHandler.getNullableResult(DateTypeHandler.java:
39)
    at org.apache.ibatis.type.DateTypeHandler.getNullableResult(DateTypeHandler.java:
28)
    at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:
81)
     
41 more
Caused by: java.lang.NumberFormatException: 张三
    at com.mysql.jdbc.StringUtils.getInt(StringUtils.java:
756)
    at com.mysql.jdbc.ResultSetRow.getTimestampFast(ResultSetRow.java:
1253)
     
54 more


Process finished 
with exit code -1

上网找了一些答案也没有解决我的问题,

后来发现原来是User类的构造函数问题,找不到相关的构造函数;试着在User中加一个默认的构造函数,就解决了。。。

希望能帮到大家。

         默认的构造函数在创建构造函数后,不会自动创建默认构造函数

DEBUG [main] 
- Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.
DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- PooledDataSource forcefully closed/removed all connections.
DEBUG [main] 
- Opening JDBC Connection
DEBUG [main] 
- Created connection 27155935.
DEBUG [main] 
- Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@19e5ddf]
DEBUG [main] 
- ==>  Preparing: select * from user where id=
DEBUG [main] 
- ==> Parameters: 27(Integer)

org.apache.ibatis.exceptions.PersistenceException: 
### 
Error querying database.  Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.swjd.po.User with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.swjd.po.User.<init>()
### The 
error may exist in sqlmap/User.xml
### The 
error may involve test.findUserById-Inline
### The 
error occurred while setting parameters
### SQL: 
select * from user where id=?
### Cause: org.apache.ibatis.reflection.ReflectionException: 
Error instantiating class com.swjd.po.User with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.swjd.po.User.<init>()

    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:
26)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:
111)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:
102)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:
66)
    at com.test.Test1.test1(Test1.java:
31)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
43)
    at java.lang.reflect.Method.invoke(Method.java:
497)
    at org.junit.runners.model.FrameworkMethod$
1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:
12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:
47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:
17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:
325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:
78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:
57)
    at org.junit.runners.ParentRunner$
3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$
1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:
288)
    at org.junit.runners.ParentRunner.access$
000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$
2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:
363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:
137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:
68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:
47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:
242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:
70)
Caused by: org.apache.ibatis.reflection.ReflectionException: 
Error instantiating class com.swjd.po.User with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.swjd.po.User.<init>()
    at org.apache.ibatis.reflection.factory.DefaultObjectFactory.instantiateClass(DefaultObjectFactory.java:
86)
    at org.apache.ibatis.reflection.factory.DefaultObjectFactory.create(DefaultObjectFactory.java:
48)
    at org.apache.ibatis.reflection.factory.DefaultObjectFactory.create(DefaultObjectFactory.java:
41)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:
528)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.createResultObject(DefaultResultSetHandler.java:
507)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:
331)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:
291)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:
266)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:
236)
    at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:
150)
    at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:
60)
    at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:
73)
    at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:
60)
    at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:
267)
    at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:
137)
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:
96)
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:
77)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:
108)
     
25 more
Caused by: java.lang.NoSuchMethodException: com.swjd.po.User.
<init>()
    at java.lang.Class.getConstructor0(Class.java:
3082)
    at java.lang.Class.getDeclaredConstructor(Class.java:
2178)
    at org.apache.ibatis.reflection.factory.DefaultObjectFactory.instantiateClass(DefaultObjectFactory.java:
60)
     
42 more


Process finished 
with exit code -1


  

这种错也是同样的问题,


加上无参构造函数就可以了。


当创建对象来接受sql结果时会遍历实体类的构造方法找到与之匹配的,如果实体类中有构造方法了但是参数不匹配的话就会报上述错误,此时添加无参构造方法(默认的构造方法),会走其他方法,
https://blog.csdn.net/qq_35975416/article/details/80488267




posted on 2020-03-25 20:01 半导体 阅读(5362) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: