java dochain,发现一个bug,希望大神可以帮我解决

我的sql使用了beetl模板,sql语句如下:

/* getMaterielListByCompanyId */

SELECT a.`id`,a.`no`, a.`name`,a.`type` FROM tmateriel a WHERE a.companyId = @companyId

and concat(a.`no`,a.`name`,a.`type`) like @searchText

order by a.`no`

log4j在debug模式下正常,一旦切换到info模式下,报错,日志如下:

[WARN ] 16:36:46.053 org.nutz.mvc.impl.processor.FailProcessor.process(FailProcessor.java:28) - Error@/standard/doLoadStandard :

org.nutz.dao.DaoException: java.lang.ArrayIndexOutOfBoundsException: 1

at org.nutz.dao.impl.sql.run.NutDaoRunner._runWithoutTransaction(NutDaoRunner.java:139)

at org.nutz.dao.impl.sql.run.NutDaoRunner._run(NutDaoRunner.java:92)

at org.nutz.dao.impl.sql.run.NutDaoRunner.run(NutDaoRunner.java:81)

at org.nutz.dao.impl.DaoSupport.run(DaoSupport.java:240)

at org.nutz.dao.impl.DaoSupport._exec(DaoSupport.java:252)

at org.nutz.dao.impl.DaoSupport.execute(DaoSupport.java:236)

at org.nutz.dao.impl.NutDao.execute(NutDao.java:1008)

at com.easysoft.service.StandardService.getStandardList(StandardService.java:116)

at com.easysoft.controller.StandardController.doLoadStandard(StandardController.java:129)

at com.easysoft.controller.StandardController$FM$doLoadStandard$50c48f684fbc77ff250702399cde55c9.invoke(StandardController.java)

at org.nutz.mvc.impl.processor.MethodInvokeProcessor.process(MethodInvokeProcessor.java:31)

at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)

at org.nutz.mvc.impl.processor.AdaptorProcessor.process(AdaptorProcessor.java:33)

at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)

at org.nutz.mvc.impl.processor.ActionFiltersProcessor.process(ActionFiltersProcessor.java:58)

at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)

at org.nutz.mvc.impl.processor.ModuleProcessor.process(ModuleProcessor.java:123)

at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)

at com.easysoft.MyEncodeProcessor.process(MyEncodeProcessor.java:11)

at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)

at org.nutz.mvc.impl.processor.EncodingProcessor.process(EncodingProcessor.java:27)

at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)

at org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor.process(UpdateRequestAttributesProcessor.java:15)

at org.nutz.mvc.impl.NutActionChain.doChain(NutActionChain.java:44)

at org.nutz.mvc.impl.ActionInvoker.invoke(ActionInvoker.java:67)

at org.nutz.mvc.ActionHandler.handle(ActionHandler.java:31)

at org.nutz.mvc.NutFilter.doFilter(NutFilter.java:202)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:745)

Caused by: java.lang.ArrayIndexOutOfBoundsException: 1

at org.nutz.dao.impl.sql.run.NutDaoExecutor._runSelect(NutDaoExecutor.java:269)

at org.nutz.dao.impl.sql.run.NutDaoExecutor.exec(NutDaoExecutor.java:53)

at org.nutz.dao.DaoInterceptorChain.doChain(DaoInterceptorChain.java:66)

at org.nutz.dao.impl.interceptor.DaoLogInterceptor.filter(DaoLogInterceptor.java:22)

at org.nutz.dao.DaoInterceptorChain.doChain(DaoInterceptorChain.java:64)

at org.nutz.dao.DaoInterceptorChain.invoke(DaoInterceptorChain.java:139)

at org.nutz.dao.impl.sql.run.NutDaoRunner.runCallback(NutDaoRunner.java:158)

at org.nutz.dao.impl.sql.run.NutDaoRunner._runWithoutTransaction(NutDaoRunner.java:125)

... 44 more

我调试过,NutDaoExecutor中代码

for (int i = 0; i < paramMatrix[0].length; i++) {

adaptors[i].set((PreparedStatement) stat,

paramMatrix[0][i], i + 1);

}

adaptors长度为1

info模式下:

companyId为32,searchText为null时,paramMatrix[0]的长度为2,直接数组越界

debug模式下:

companyId为32,searchText为null时,paramMatrix[0]的长度为1,万事ok

找了一个星期了,没有头绪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值