配置:
<select id="queryAttach_bylist" parameterType="list" resultType="cn.gov.pbc.fsp.pagedefinition.vo.Attachmentvo">
<![CDATA[
select * from spis_attachment where irecordid in
]]>
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
<![CDATA[
#{item.irecordid}
]]>
</foreach>
</select>
执行报错:
[2015-06-01 11:03:40,860][ERROR] - 获取id为cn.gov.pbc.spis.common.dao.IAttachmentDAO.queryAttach_bylist的SQL语句出错 - cn.gov.pbc.fsp.base.persistence.ibatis.BaseDAOIbatis.dealSqlParams0(BaseDAOIbatis.java:1251)
java.lang.UnsupportedOperationException
at org.apache.ibatis.reflection.wrapper.CollectionWrapper.get(CollectionWrapper.java:34)
at org.apache.ibatis.reflection.MetaObject.getValue(MetaObject.java:123)
at org.apache.ibatis.builder.xml.dynamic.DynamicContext$ContextMap.get(DynamicContext.java:89)
at org.apache.ibatis.builder.xml.dynamic.DynamicContext$ContextAccessor.getProperty(DynamicContext.java:107)
at org.apache.ibatis.ognl.OgnlRuntime.getProperty(OgnlRuntime.java:1657)
at org.apache.ibatis.ognl.ASTProperty.getValueBody(ASTProperty.java:92)
at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:210)
at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:333)
at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:413)
at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:395)
at org.apache.ibatis.builder.xml.dynamic.OgnlCache.getValue(OgnlCache.java:42)
at org.apache.ibatis.builder.xml.dynamic.ExpressionEvaluator.evaluateIterable(ExpressionEvaluator.java:43)
at org.apache.ibatis.builder.xml.dynamic.ForEachSqlNode.apply(ForEachSqlNode.java:51)
at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:29)
at org.apache.ibatis.builder.xml.dynamic.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:37)
at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:241)
at cn.gov.pbc.fsp.base.persistence.ibatis.BaseDAOIbatis.getBoundSql(BaseDAOIbatis.java:1014)
at cn.gov.pbc.fsp.base.persistence.ibatis.BaseDAOIbatis.dealSqlParams0(BaseDAOIbatis.java:1249)
at cn.gov.pbc.fsp.base.persistence.ibatis.BaseDAOIbatis.dealSqlParams(BaseDAOIbatis.java:1235)
at cn.gov.pbc.fsp.base.persistence.ibatis.BaseDAOIbatis.queryForList(BaseDAOIbatis.java:153)
at cn.gov.pbc.spis.common.service.AttachmentServiceImpl.queryList(AttachmentServiceImpl.java:116)
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 com.cfcc.jaf.core.invoker.bean.BeanServiceInvoker.invoke(BeanServiceInvoker.java:85)
at com.cfcc.jaf.core.invoker.transation.TransactionInvoker.invoke(TransactionInvoker.java:80)
at com.cfcc.jaf.core.invoker.handler.WebxServiceInvocationHandler.invoke(WebxServiceInvocationHandler.java:101)
at $Proxy19.queryList(Unknown Source)
at cn.gov.pbc.spis.msg.bean.ExtAbstractManagedBean.deleteAll(ExtAbstractManagedBean.java:371)
at cn.gov.pbc.spis.msg.bean.AbstractMsgBean.deleteAll(AbstractMsgBean.java:179)
at cn.gov.pbc.spis.msg.bean.MsgBean.deleteAll(MsgBean.java:105)
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 org.apache.el.parser.AstValue.invoke(AstValue.java:191)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
at cn.gov.pbc.fsp.base.listener.ActionListenerImpl.processAction(ActionListenerImpl.java:71)
at javax.faces.component.UICommand.broadcast(UICommand.java:387)
at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at cn.gov.pbc.fsp.base.filter.SessionFilter.doFilter(SessionFilter.java:35)
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:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
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:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675)
at java.lang.Thread.run(Thread.java:619)
[2015-06-01 11:03:40,892][ERROR] - 调用异常:查询cn.gov.pbc.spis.common.dao.IAttachmentDAO.queryAttach_bylist出错,paramObj:=[cn.gov.pbc.fsp.pagedefinition.vo.Attachmentvo@1d10607] - com.cfcc.jaf.core.invoker.handler.WebxServiceInvocationHandler.invoke(WebxServiceInvocationHandler.java:126)
解决办法:(把参数list改为map即可)
<select id="queryAttach_bylist" parameterType="Map" resultType="cn.gov.pbc.fsp.pagedefinition.vo.Attachmentvo">
<![CDATA[
select * from spis_attachment where irecordid in
]]>
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
<![CDATA[
#{item.irecordid}
]]>
</foreach>
</select>