SSM時遇到的異常(12)——java.lang.reflect.UndeclaredThrowableException【java.sql.SQLException: 無法轉換爲內部表示】

 SSM+Bootstrap+Tomcat8.5+Eclipse+JDK1.8

2019-08-06 14:48:59 DEBUG [com.alibaba.druid.pool.PreparedStatementPool:160]- {conn-10001, pstmt-20005} exit cache
2019-08-06 14:48:59 DEBUG [com.github.miemiedev.mybatis.paginator.support.SQLHelp:52]- Total count SQL [select count(1) from (SELECT  
    t.LKH, t.LKMC, t.CJJG, t.QXDM, t.ZDYFZ, (CASE t.ZDLK WHEN 1 THEN '是' WHEN 0 THEN '否'END) AS zdlk, t.LX, t.XCXS, t.DLZL, t.DLLX, t.LKZT, t.CDS, t.JD, t.WD, t.QZ,
    t.KZZD1, t.KZZD2, t.WFDD, t.LDDM, t.LDMC, t.DDMS, t.XH, t.JSRQ, t.CJDW, t.TZDW, t.XSFX, t.WFDD1, t.LDDM1, t.DDMS1,
    t.LKMC1, t.FLG, t.QYZT, t.LK_YJ_FLG, t.LK_YJZ, t.LK_YJ_MIN, t.LK_YJ_MAX, t.LKSHZT, t.BZ, t.CJSJ, t.CJR,
    t.GXSJ, t.GXR, t.ZT, t.WD1, t.JD1, t.LKWFLX, t.BQ, t.QXSBBM  
    
    FROM XX t
    WHERE t.zt = 1
    
      AND t.zdlk = ?
     
    ORDER BY t.cjsj DESC) tmp_count] 
2019-08-06 14:48:59 DEBUG [com.github.miemiedev.mybatis.paginator.support.SQLHelp:53]- Total count Parameters: {wxdw=, zdyfz=, qxdm=, lkmc=, lkh=, cjjg=, sblx=, zdlk=0, sbnf=, dlzl=, dllx=, lkwflx=, sbzt=} 
2019-08-06 14:48:59 DEBUG [com.github.miemiedev.mybatis.paginator.support.SQLHelp:69]- Total count: 16568
2019-08-06 14:48:59 DEBUG [com.alibaba.druid.pool.PreparedStatementPool:129]- {conn-10003, pstmt-20006} enter cache
2019-08-06 14:48:59 DEBUG [org.mybatis.spring.SqlSessionUtils:168]- Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2c50d568]
2019-08-06 14:48:59 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils:327]- Returning JDBC Connection to DataSource
2019-08-06 14:48:59 DEBUG [org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver:134]- Resolving exception from handler [public java.lang.Object com.lst.controller.JcxxLkxxViewController2.queryList(java.lang.Integer,java.lang.Integer,javax.servlet.http.HttpServletRequest)]: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.reflect.UndeclaredThrowableException
### The error may exist in file [E:\Work_QYF\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\NdManagent\WEB-INF\classes\com\lst\mapping\XXMapper2.xml]
### The error may involve com.lst.dao.XXMapper2.queryListByMap-Inline
### The error occurred while setting parameters
### SQL: select * from ( SELECT       t.LKH, t.LKMC, t.CJJG, t.QXDM, t.ZDYFZ, (CASE t.ZDLK WHEN 1 THEN '是' WHEN 0 THEN '否'END) AS zdlk, t.LX, t.XCXS, t.DLZL, t.DLLX, t.LKZT, t.CDS, t.JD, t.WD, t.QZ,     t.KZZD1, t.KZZD2, t.WFDD, t.LDDM, t.LDMC, t.DDMS, t.XH, t.JSRQ, t.CJDW, t.TZDW, t.XSFX, t.WFDD1, t.LDDM1, t.DDMS1,     t.LKMC1, t.FLG, t.QYZT, t.LK_YJ_FLG, t.LK_YJZ, t.LK_YJ_MIN, t.LK_YJ_MAX, t.LKSHZT, t.BZ, t.CJSJ, t.CJR,     t.GXSJ, t.GXR, t.ZT, t.WD1, t.JD1, t.LKWFLX, t.BQ, t.QXSBBM   FROM XX t WHERE t.zt = 1                                                       AND t.zdlk = ?      ORDER BY t.cjsj DESC ) where rownum <= ?
### Cause: java.lang.reflect.UndeclaredThrowableException


嚴重: Servlet.service() for servlet [spring] in context with path [/NdManagent] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.reflect.UndeclaredThrowableException
### The error may exist in file [E:\Work_QYF\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\NdManagent\WEB-INF\classes\com\lst\mapping\XXMapper2.xml]
### The error may involve com.lst.dao.XXMapper2.queryListByMap-Inline
### The error occurred while setting parameters
### SQL: select * from ( SELECT       t.LKH, t.LKMC, t.CJJG, t.QXDM, t.ZDYFZ, (CASE t.ZDLK WHEN 1 THEN '是' WHEN 0 THEN '否'END) AS zdlk, t.LX, t.XCXS, t.DLZL, t.DLLX, t.LKZT, t.CDS, t.JD, t.WD, t.QZ,     t.KZZD1, t.KZZD2, t.WFDD, t.LDDM, t.LDMC, t.DDMS, t.XH, t.JSRQ, t.CJDW, t.TZDW, t.XSFX, t.WFDD1, t.LDDM1, t.DDMS1,     t.LKMC1, t.FLG, t.QYZT, t.LK_YJ_FLG, t.LK_YJZ, t.LK_YJ_MIN, t.LK_YJ_MAX, t.LKSHZT, t.BZ, t.CJSJ, t.CJR,     t.GXSJ, t.GXR, t.ZT, t.WD1, t.JD1, t.LKWFLX, t.BQ, t.QXSBBM   FROM XX t      WHERE t.zt = 1            AND t.zdlk = ?                                                                 ORDER BY t.cjsj DESC ) where rownum <= ?
### Cause: java.lang.reflect.UndeclaredThrowableException] with root cause
java.sql.SQLException: 無法轉換爲內部表示

分析:

獲取的記錄數,是正確的,且,訪問數據庫之前未報錯,說明:MyBatis已經訪問過了Oracle了且SQL語句(含條件判斷)沒有錯。

參考了:java.lang.reflect.UndeclaredThrowableException【文章】

我檢查XxxController對應方法、XxxService對應方法、XxxMapper.java對應方法及其參數、XxxVo的屬性名稱是否對得上XxxMapper.xml對應SQL語句的字段名,且屬性有沒有setter和getter【就是偏偏沒對XxxVo屬性的類型!!!】,都是沒有問題的!!!但很明顯:

獲取的SQL記錄無處安放!!!就是與<select>的returnType有關呀!!!

改:

然後發現XxVo的zdlk的屬性類型爲Short,雖然在Oracle中數據表的zdlk爲NUMBER(2)類型,但我的SQL語句中,返回的zdlk值:要麼爲“是”要麼爲“否”,則改zdlk屬性類型改爲String,就完事了~

大意了!!!

從該問題看出:

不一定要根據數據表的字段類型來設置Javabean的屬性類型,實際上要根據SQL語句獲取的字段它對應的類型來設置Javabean的屬性類型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章