代码如下:public List<Map<String, Object>> queryStu() throws Exception { return (List<Map<String, Object>>)this.getHibernateTemplate().execute( new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { System.out.println("daoimpl..doinhibetrnate.."); String hql = "select count(distinct sid) from Student"; Query q = session.createQuery(hql); Object o = q.uniqueResult();//总记录数 allPage = (Integer.valueOf(o.toString()) + pageSize - 1)/pageSize;//总页数 allog = Integer.valueOf(o.toString()); String hql2 = "select sid,sname,ssex,sage,sdept,sclass from Student"; Query q2 = session.createQuery(hql2); q2.setFirstResult((currentPage - 1)*pageSize);//起始数据 q2.setMaxResults(pageSize);//每页的条数 List<Map<String, Object>> list = q2.list();//object类型,转为map报错 System.out.println("daompl.....+"+list); for(Map<String, Object> map:list){//object强转map System.out.println("list-------"); for(String s:map.keySet()){ System.out.println(s+":"+map.keySet()); } } return list; } }); }在下面的for循环输出有错,怎么回事?
字面意思,类型转化异常,无法将Object类型对象转化成Map类型对象,你通过hibernate获取的数据集合没有指定其返回类型,默认的就是Object类型,通过在取值之前指定他的返回类型为Map就行了,在你的List<Map<String, Object>> list = q2.list();上面加上一行q2.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<Map<String, Object>> list = q2.list();// object类型,转为map报错这里应该写成:List<Object>list =q2.list();for(Object object:list){ Object[] obj =(Object[])object; //然后进行输入obj数组里面的值即可 System.out.println(obj[0]); System.out.println(obj[1]); //....}