Posted on 2005-12-02 09:41
Terry的Blog 閱讀(384)
評論(0) 編輯 收藏 所屬分類:
java語言
取單個字段,會返回字段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());
}
|
取多個字段,Hibernate把每個id和name做成一個2個元素的單維數組,List實際上是一個單維數組的集合。
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是不會去構造PO的,這一點很容易驗證。JCS是對象Cache,如果寫了這樣的HQL,JCS里面是空的,說明Hibernate沒有構造PO,如果再加上一個對象c本身,JCS里面就有數據了,如下:
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];
}
|