ibatIS动态生成SQL时报“rn”列名无效
问题描述
先打开一个分页列表,然后点击某条记录,打开明细,列表和打开明细调用的是同个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
http://blog.sina.com.cn/s/blog_6fd1fb5b0101hnf2.html
转载于:https://my.oschina.net/u/3054940/blog/1634971
本文解决ibatIS动态生成SQL时,在WebSphere环境下出现“rn”列名无效的问题。通过添加remapResults属性,确保每次执行SQL都重新映射列名,避免缓存导致的错误。
5186

被折叠的 条评论
为什么被折叠?



