query.setParameter总是提示越界异常

zhouyouok 2011-12-30 10:13:19
我想在Dao里实现查询,用Map<String,Object>封装查询条件,在Dao里查询时候老是出错,求帮助

List<T> list = null;
String hql = "from "+entity.getSimpleName()+" o where 1=1";
Session session = this.getSession();
Query query = session.createQuery(hql);
int i = 0;
if(maps!=null && maps.size()>0){
for(String propertyName:maps.keySet()){
hql+=" and o."+propertyName+"=?";
Object value = maps.get(propertyName);
query.setParameter(i++,value);
}
}
query.setFirstResult((nowPage-1)*pageSize);
query.setMaxResults(pageSize);
list = query.list();
session.close();
...全文
340 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2013-03-06
  • 打赏
  • 举报
回复
解决了吗?我也遇到的同样的问题
zhouyouok 2011-12-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 licip 的回复:]
占位符中有几个位置需要被赋值,在session.createQuery方法的时候确定的。
[/Quote]

原来是这样啊

我还总纠结于setParameter的位置
zhouyouok 2011-12-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 panhaichun 的回复:]
说这么明白了,拼装好hql之后再用hql初始化query啊
[/Quote]

哦,是初始化query的位置的问题,我之前是,先拼出在hql,在setParameter,顺序折腾半天
YeHuai1991 2011-12-30
  • 打赏
  • 举报
回复
query.setParameter(i++,value);
修改成:
query.setParameter(i,value);
i++;
licip 2011-12-30
  • 打赏
  • 举报
回复
占位符中有几个位置需要被赋值,在session.createQuery方法的时候确定的。
panhaichun 2011-12-30
  • 打赏
  • 举报
回复
说这么明白了,拼装好hql之后再用hql初始化query啊
zhouyouok 2011-12-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 panhaichun 的回复:]
Query query = session.createQuery(hql);

这行代码放到后面,hql都还没拼完就先createQuery了,

另外,query.setParameter也要等hql拼好,createQuery之后才能做
[/Quote]

那我的query初始化应该是什么?
icare 2011-12-30
  • 打赏
  • 举报
回复
query.setParameter(i++,value);

-->
query.setParameter(i,value);
i++;
panhaichun 2011-12-30
  • 打赏
  • 举报
回复
Query query = session.createQuery(hql);

这行代码放到后面,hql都还没拼完就先createQuery了,

另外,query.setParameter也要等hql拼好,createQuery之后才能做
金先生1 2011-12-30
  • 打赏
  • 举报
回复
在代码里打个断点调试一下,这样在哪出错不就清楚了么。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧