问题描述
先打开一个分页列表,然后点击某条记录,打开明细,列表和打开明细调用的是同个SQL,本机用TOMCAT部署没问题,但当应用部署到 WEBSPHERE 时,却报错,错误日志如(RN是分页时自定义的列):
--- Check the result mapping for the 'RN' property.
--- Cause: java.sql.SQLException: 列名无效
问题原因
iBatis会自动缓存每条查询语句的列名映射,对于动态查询字段或分页查询等queryForPage, queryForList ,就可能产生“列名无效”、rs.getObject(object)异常错误
解决办法
在SQL语句上加一个属性(remapResults)配置让每次执行都重新映射列名。
注:仅在可能被queryForPage()和queryForList()都调用、或者动态字段的SQL语句上加此属性。(以牺牲性能为代价,损耗很小很小)。
如下所示:
<select id="" resultClass="java.util.HashMap"
parameterClass="java.util.HashMap" remapResults="true">
参见:
https://www.cnblogs.com/ding0910/archive/2011/07/12/2104374.html