日期:2014-05-17  浏览次数:20700 次

query.setParameter总是提示越界异常
我想在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();

------解决方案--------------------
说这么明白了,拼装好hql之后再用hql初始化query啊
------解决方案--------------------
占位符中有几个位置需要被赋值,在session.createQuery方法的时候确定的。