Ibatis异常com.ibatis.common.jdbc.exception.NestedSQLException
Ibatis错误com.ibatis.common.jdbc.exception.NestedSQLException
今天遇到一个问题,Ibatis查询时,同样的配置,当返回的数据集为空的时候报错,有数据时就不报错。
org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; --- The error occurred in com/tongcard/tcc/report/ibatis/memberReport_SqlMap.xml. --- The error occurred while applying a result map. --- Check the MemberAddReport_Map.totalMember. --- The error happened while setting a property on the result object. --- Cause: net.sf.cglib.beans.BulkBeanException; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in com/tongcard/tcc/report/ibatis/memberReport_SqlMap.xml. --- The error occurred while applying a result map. --- Check the MemberAddReport_Map.totalMember. --- The error happened while setting a property on the result object. --- Cause: net.sf.cglib.beans.BulkBeanException at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:212) at org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(SqlMapClientTemplate.java:249) at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:296) at com.tongcard.tcc.report.manager.impl.MemberAddReportManagerImpl.queryTotalMemberAdd(MemberAddReportManagerImpl.java:32) at com.tongcard.tcc.report.manager.impl.MemberAddReportManagerImpl$$FastClassByCGLIB$$c8e1b67c.invoke(<generated>) at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149) at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:700) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635) at com.tongcard.tcc.report.manager.impl.MemberAddReportManagerImpl$$EnhancerByCGLIB$$2b581bd2.queryTotalMemberAdd(<generated>) at com.tongcard.tcc.report.MemberAddReportService.loadMemberAdd(MemberAddReportService.java:95) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:421) at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183) at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1503) at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:884) at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:121) at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158) at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44) at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67) at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:146) at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:278) at org.springframework.flex.servlet.MessageBrokerHandlerAdapter.handle(MessageBrokerHandlerAdapter.java:101) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.tongcard.tcc.util.MultipleDataSourceFilter.doFilter(MultipleDataSourceFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.tongcard.tcc.util.VirtualSessionFilter.doFilter(VirtualSessionFilter.java:27) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.tongcard.tcc.util.VirtualSessionFilter.doFilter(VirtualSessionFilter.java:27) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619)
先记下这个异常。
1 楼
select*from爱
2010-11-04
真是个勤奋的好孩子
2 楼
远去的渡口
2011-04-22
今天才发现,解决方案一直忘记补上了,呵呵,这个异常出现的主要原因是number类型的数据数据库里是空的,在model封装层是用int类型,这样在调用set()方法时就会出问题。解决方案是在Ibatis的数字类型的property中加上nullValue="0"就可以了。
<resultMap class="AccountCouponReport" id="couponMap">
<result property="couponName" column="COUPON_NAME"/>
<result property="couponTypeId" column="COUPON_TYPE_ID"/>
<result property="couponMoney" column="COUPON_MONEY" nullValue="0"/>
<result property="sendNum" column="SEND_NUMBER" nullValue="0"/>
<resultMap class="AccountCouponReport" id="couponMap">
<result property="couponName" column="COUPON_NAME"/>
<result property="couponTypeId" column="COUPON_TYPE_ID"/>
<result property="couponMoney" column="COUPON_MONEY" nullValue="0"/>
<result property="sendNum" column="SEND_NUMBER" nullValue="0"/>