浏览 1237 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-12-25
DAO中有以下方法:
public Integer getOrderformCountByBiOid(String biOid, String titlesearch, List recBiOidsearch) throws Exception {
HashMap paramMap=new HashMap();
paramMap.put("biOid", biOid);
paramMap.put("titlesearch", titlesearch);
paramMap.put("recBiOidsearch", recBiOidsearch);
return (Integer) this.sqlMapClient.queryForObject("getOrderformCountByBiOid", paramMap);
}
上面的recBiOidsearch元素是一个List,里面包含了一个oid列表。biOid和titlesearch是String。 我的sqlMap代码如下:
<select id="getOrderformByBiOid" parameterClass="java.util.HashMap" resultMap="OrderformResult">
select *
from OPINION_ORDERFORM
<dynamic prepend="where">
<isNotNull prepend="and" property="biOid">
BIOID=#biOid#
</isNotNull>
<isNotNull prepend="and" property="titlesearch">
ORDERTITLE like '%$titlesearch$%'
</isNotNull>
<isNotNull prepend="and" property="recBiOidsearch">
RECBIOID in
<iterate open="(" close=")" conjunction=",">
#recBiOidsearch[]#
</iterate>
</isNotNull>
</dynamic>
order by SENDTIME DESC
</select>
我希望执行的是一个这样的sql(假设所有的元素都不是null的话): select * from OPINION_ORDERFORM where BIOID=#biOid# and ORDERTITLE like '%$titlesearch$%' and RECBIOID in(1,2,3) 但是报错,信息如下: com.ibatis.common.jdbc.exception.NestedSQLException: --- The error occurred in sql-map/Orderform.xml. --- The error occurred while preparing the mapped statement for execution. --- Check the getOrderformByBiOid. --- Check the parameter map. --- Cause: com.ibatis.sqlmap.client.SqlMapException: ParameterObject or property was not a Collection, Array or Iterator. 如果我将List相关的sqlmap删掉,即下面这段代码删掉:
<isNotNull prepend="and" property="recBiOidsearch">
RECBIOID in
<iterate open="(" close=")" conjunction=",">
#recBiOidsearch[]#
</iterate>
</isNotNull>
他就没问题了,所以我怀疑 parameterClass="java.util.HashMap"是不是错误,还是有别的问题呢?请教各位有经验者,十分感谢!!!如果能有更好地解决办法,还麻烦发上来,感谢! 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2007-12-25
找到问题了!!刚发完帖google了一下,iterate应该加上property="recBiOidsearch"的属性。因为没有写这个,iterate找不到集合。
|
|
| 返回顶楼 | |
|
时间:2008-01-07
原来如此,所以在遍历之前要设置被跌代对象
|
|
| 返回顶楼 | |


