Posted on 2005-12-02 09:41
Terry的Blog 閱讀(384)
評(píng)論(0) 編輯 收藏 所屬分類:
java語(yǔ)言
取單個(gè)字段,會(huì)返回字段List:
java代碼: |
Query q = s.createQuery("select c.id from Cat as c");
List l = q.list();
for (i=0; i< l.size(); i++) {
Long id = (Long) l.get(i);
System.out.println(id.longValue());
}
|
取多個(gè)字段,Hibernate把每個(gè)id和name做成一個(gè)2個(gè)元素的單維數(shù)組,List實(shí)際上是一個(gè)單維數(shù)組的集合。
java代碼: |
Query q = s.createQuery("select Cat.id, Cat.name, from Cat ");
List l = q.list();
for (int i=0; i< l.size(); i++) {
Object[] row = (Object[]) l.get(i);
Long id = (Long) row[0];
String name = (String) row[1];
}
|
在這種情況下,HQL是不會(huì)去構(gòu)造PO的,這一點(diǎn)很容易驗(yàn)證。JCS是對(duì)象Cache,如果寫了這樣的HQL,JCS里面是空的,說(shuō)明Hibernate沒(méi)有構(gòu)造PO,如果再加上一個(gè)對(duì)象c本身,JCS里面就有數(shù)據(jù)了,如下:
java代碼: |
Query q = s.createQuery("select c.id, c.name,c from Cat as c");
List l = q.list();
for (int i=0; i< l.size(); ; i++) {
Object[] row = (Object[]) l.get(i);
Long id = (Long) row[0];
String name = (String) row[1];
Cat c = (Cat) row[2];
}
|