日期:2014-05-19  浏览次数:20798 次

hibernate如何多函数查询


Query  query=session.createSQLQuery("select count(*), sum(age)from stu  ");

  List list=new ArrayList();
  list=query.list();
for (Iterator iterator = list.iterator(); iterator.hasNext();) {

Object[] object = (Object[]) iterator.next();
System.out.println(object[0]+"  "+object[1]);


}
请问这样获取2个函数的值有什么不对吗?为什么得到的是2个重复的值,坐等高人指点!
------解决方案--------------------
我把你的代码考下来测试了一下,你那个迭代遍历
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
好像有点问题吧

Iterator iterator=list.iterator();
while(iterator.hasNext()){
//System.out.println(iterator.next());
Object[] object =(Object[]) iterator.next();
System.out.println(object[0]+"  "+object[1]+" "+object[2]);


}

下面是结果
10  lei yunnan
2  liu shandong
------解决方案--------------------
我用了你的迭代,结果一样,咱俩的迭代其实是一样的,请你查询俩个返回int或float的函数,你确定是按我的查询测试的吗?究竟为什么
------解决方案--------------------
可能这俩值获取到的时候就是一样的饿

------解决方案--------------------
经过不断测试,问题终于解决了,原因是在查询的时候没有给查询的函数对应字段。所以list只能存储第一个值,

select count(*), sum(age)from stu 改成 select select count(*) as 统计, sum(age) as 总和from stu

就可以了,谢谢大家!