 悬赏园豆:20
                [已关闭问题] 
            
                    关闭于 2014-01-13 14:07
                悬赏园豆:20
                [已关闭问题] 
            
                    关闭于 2014-01-13 14:07
                 
        当ids为一个元素时正常,多于一个就报错?你这里传来的是?数组?
报错是参数下标越界、
public List<Map> findMapByIds(String hql, Object[] ids) {
 List<Map> list =this.getHibernateTemplate().find(hql,ids);
 return list.size()>0?list:null;
 }
我传的是个数组
@刷子: 那你这里设置的数组和你的sql需要的匹配不上啊
你的"?"代表一个参数,而你的传入是一个Object[]
越界了、
@Beyond-bit: 不清楚,我更新也是这样用?,传的数组,可以批量更新
@刷子: 你把in (?) 换成你 数组的长度 假设数组三个参数 in(?,?,?) 试试
@Beyond-bit: 数组长度不确定的,谢谢你了,已经解决了,用:id
 String hql="select new map(id as id, p08002 as p08002) from P08 p where p.id in (:id)";
public List<Map> findMapByIds(final String hql, final Object[] ids) {
 //List<Map> list =this.getHibernateTemplate().find(hql,ids);
 List<Map> list =this.getHibernateTemplate().execute(new HibernateCallback() {
 public List<Map> doInHibernate(Session session)
 throws HibernateException, SQLException {
 Query query = session.createQuery(hql);
 query.setParameterList("id", ids);
 return query.list();
 }
 
 });
 return list.size()>0?list:null;
 }
这样可以
@刷子: 这种也可以,不过刚那种设置没问题,要么就是hql语句写的问题、
@Beyond-bit: 第一个那个执行只有一条记录时没问题,多条时就报那个错了