首页 > 其他 > 详细

iBatis查询时报"列名无效"或"找不到栏位名称"无列名的错误原因及解决方法

时间:2020-04-21 16:11:40      阅读:120      评论:0      收藏:0      [点我收藏+]

iBatis会自动缓存每条查询语句的列名映射,对于动态查询字段或分页查询等queryForPage, queryForList,就可能产生“列名无效”、rs.getObject(object)异常错误。

当出现动态改变查询列,或者其他方式动态改变的时候,都需要设置remapResults="true"这个属性,因此不至于出现“列名无效”的错误。其实,这个错误抛出的地方是resultSet.getString(“xx”);方法,因为iBATIS保留了第一次的列名,所以第二次查询的时候resultSet获得的还是第一次保留下来的列名。



解决办法:

在SQL语句上加一个属性(remapResults)配置让每次执行都重新映射列名。

注:仅在可能被queryForPage()和queryForList()都调用、或者动态字段的SQL语句上加此属性。(以牺牲性能为代价,损耗很小很小)。

如下所示: 

<select id="queryPartyRole" parameterClass="long" resultClass="java.util.HashMap" remapResults="true"></select>

 

 
 

iBatis查询时报"列名无效"或"找不到栏位名称"无列名的错误原因及解决方法

原文:https://www.cnblogs.com/edda/p/12744988.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!