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

哇噻,看到每天论坛这么多问题被解决,大伙真是热心啊,这有个hibernate的query的问题想请教各位大虾!
部分代码如下: String hql=" select min(e.age),max(age) from  Emp e ";
Query query=session.createQuery(hql);

List emps=query .list();
for (Iterator iterator = emps.iterator(); iterator.hasNext();) {
Object[] e = (Object[]) iterator.next(); 
System.out.println(e[0]+","+e[1]);

}
不明白的是,此处为什么是System.out.println(e[0]+","+e[1]);
而不能是System.out.println(e)(这样只能打印出来的是数组名,不是内部的元素);
用debug发现iterator迭代的第一项是一个Object类型的数组,数组内有两个元素。不理解啊,
感觉应该是迭代的第一项是e【0】,第二项是e[1],不需要弄一个Object这样的数组来放这些e1,e2啊,应该不断的iterator.next直接往下面放才对啊?让游标不断向下走啊
按他这样的话,不管查到多少个结果, iterator.next(); 都只走一步,因为他都放在了第一项的Object类型的数组中,这样iterator.next(); 根本不会向下走了,那不是没什么意义嘛,一个iterator实际就迭代一次。

不知道说清楚了没有

还有就是用debug发现iterator的起始游标是-1对吗?只知道第一次迭代出的是第一项(下标为0的),推断起始为-1(debug看见lastRet=-1),这样的说法是不是不专业。
想了半天没转过弯来,总觉得别扭的很,各位大虾指点下!
------最佳解决方案--------------------
你查询出来的结果z只有一行,里面有多个值,那它肯定只循环一次了!
------其他解决方案--------------------
自顶一下,方便更新!
------其他解决方案--------------------
木有人看见吗?
------其他解决方案--------------------
不明白的是,此处为什么是System.out.println(e[0]+","+e[1]);
而不能是System.out.println(e)(这样只能打印出来的是数组名,不是内部的元素);
//上面的解释是,e只是一个对象数组对象而已,而不是一个对象类型的对象,所以你直接打印会是他的名称,而不是内容例如String[] a = {"a", "b", "c"};你打印a会是abc吗?肯定不会,你需要取这个String类型数组对象a的下标0才会是"a",下标1会是"b",当然2就是"c"


用debug发现iterator迭代的第一项是一个Object类型的数组,数组内有两个元素。不理解啊,
感觉应该是迭代的第一项是e【0】,第二项是e[1],不需要弄一个Object这样的数组来放这些e1,e2啊,应该不断的iterator.next直接往下面放才对啊?让游标不断向下走啊
按他这样的话,不管查到多少个结果, iterator.next(); 都只走一步,因为他都放在了第一项的Object类型的数组中,这样iterator.next(); 根本不会向下走了,那不是没什么意义嘛,一个iterator实际就迭代一次。
//上面这段对于迭代我没什么研究,所以无法回答你。

还有就是用debug发现iterator的起始游标是-1对吗?只知道第一次迭代出的是第一项(下标为0的),推断起始为-1(debug看见lastRet=-1),这样的说法是不是不专业
//所有的下标都是以0开头的,如果是-1一般都代表没有数据。所以如果判断iterator为-1的时候代表这个迭代器里面没有东西,直接跳过。不知明白了没?
------其他解决方案--------------------
e[0]里面装的是min(e.age)的值,e[1]里面装的是max(age)的值
------其他解决方案--------------------
谢谢,昨天误入歧途了!
------其他解决方案--------------------
伤心的,以后你的问题自动过滤了...辛辛苦苦敲了那么多字,一分都没给
------其他解决方案--------------------
引用:
伤心的,以后你的问题自动过滤了...辛辛苦苦敲了那么多字,一分都没给


别伤心,下次给分,之前在别的论坛金币和分都只能给一个人的,今天才知道这论坛规则不一样,昨天连回复都没找着
今天才发现有个引用功能的,汗,坛子不熟悉,表见怪
以后还有机会嘛!。