隨筆-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 小米 閱讀(2999) 評論(0)  編輯  收藏 所屬分類: Hibernate
          主站蜘蛛池模板: 玉田县| 公主岭市| 恭城| 双峰县| 毕节市| 上思县| 易门县| 大渡口区| 怀化市| 招远市| 宁海县| 迁西县| 沙洋县| 商丘市| 尼勒克县| 日照市| 宝清县| 越西县| 嵊泗县| 瑞丽市| 青冈县| 江安县| 卓尼县| 讷河市| 邻水| 沐川县| 荃湾区| 女性| 北宁市| 武平县| 珠海市| 西畴县| 康定县| 旺苍县| 平舆县| 尤溪县| 迁安市| 墨竹工卡县| 墨玉县| 通江县| 拜泉县|