隨筆-57  評論-202  文章-17  trackbacks-0
                在使用HQL查詢中,有時并不需要獲取完整的一個實體對象,例如一個實體對象User有三個屬性:account, password和email,如果我們只需要獲取account和email屬性,那么有兩種方法可以選擇。
                1. 用普通的"select user.account, user.email from User as user",程序片斷如下:

              List list = session.createQuery("select user.account, user.email from User as user").list();
              Iterator it 
          = list.iterator();
              
          while (it.hasNext()) {
                Object[] values 
          = (Object[]) it.next();
                System.
          out.println(values[0+ " " + values[1]);
              }

                這時調用Query類的list方法返回的將是一個每個元素都是一個Object數組的List。如果只獲取一個屬性,那么返回的List中的每個元素都是String實例。

                2.在HQL中用new操作符生成實體對象,例如:"select new User(user.account, user.email) from User as user",程序片斷如下:

              List list = session.createQuery("select new User(user.account, user.email) from User as user").list();
              Iterator it 
          = list.iterator();
              
          while (it.hasNext()) {
                User user 
          = (User) it.next();
                System.
          out.println(user.getAccount() + " " + user.getEmail());
              }

                這時list方法返回的List中的每一個元素都是User實體對象。這里有三點需要注意的:
                a.在HQL語句中需要使用as操作符指定User的別名,并且需要在構造函數的屬性前面加上別名;
                b.HQL語句中的構造函數在User類中必須要有相應的構造函數;
                c.生成的實體對象是VO對象,如果對這些對象調用Session的saveOrUpdate方法將導致插入新的記錄,而不是更新記錄。
          posted on 2005-06-15 16:33 小米 閱讀(3005) 評論(0)  編輯  收藏 所屬分類: Hibernate
          主站蜘蛛池模板: 东兰县| 夹江县| 南汇区| 阳原县| 久治县| 涞水县| 嘉善县| 新沂市| 洛浦县| 冀州市| 鄂托克旗| 九龙城区| 瓦房店市| 高尔夫| 河北区| 乌鲁木齐市| 垦利县| 宁津县| 广宁县| 荣成市| 漳州市| 凤城市| 固原市| 鹤壁市| 昌图县| 贞丰县| 灌南县| 邢台县| 太和县| 大城县| 开化县| 通江县| 中卫市| 兴城市| 惠东县| 蒙山县| 墨竹工卡县| 深泽县| 凤阳县| 长海县| 富锦市|