ibatis sql迭代出错

时间:2013-09-26 07:21:19

标签: ibatis

我正在使用ibatis + DWR,但是当我将地图传递给ibatis时,我会收到如下错误:

  

原因:com.ibatis.sqlmap.client.SqlMapException:ParameterObject或   property不是Collection,Array或Iterator。

这是我的sql:

<update id="updateDarenFlagByUserTagIDs" parameterClass="java.util.Map">
    update system_usertag 
    set isdaren = 1
    where uid = #uid# 
    <isNotEmpty prepend=" AND " property="utidlist">
        and utid in
        <iterate open="(" close=")" conjunction="," property="utidlist">
          #utidlist[]#
        </iterate>
    </isNotEmpty>
</update>

在DWR部分,我通过了如下地图:

{'uid':uid, 'utidlist':utidlist}

有关此错误的任何想法?

1 个答案:

答案 0 :(得分:0)

我已在以下帖子https://stackoverflow.com/questions/18997883/malformed-url-exception-in-ibatis/19025819#19025819中回答了完全相同的问题。请参考它。问题的解决方案非常简单,确保嵌套在迭代标记<iterate></iterate>中的参数(在您的情况下为“ utidlist ”)确实是一个列表/集合,而不是列表。导致此错误的原因是您的可迭代属性“ utidlist ”不是列表。如果你能把它变成一个列表而不是一个平价值,你就可以了。

万一你仍然可以让它工作,你可能还想粘贴一整堆日志,以便你可以看到出了什么问题。