隨筆-57  評論-202  文章-17  trackbacks-0
                在使用HQL查詢中,有時并不需要獲取完整的一個實(shí)體對象,例如一個實(shí)體對象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]);
              }

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

                2.在HQL中用new操作符生成實(shí)體對象,例如:"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實(shí)體對象。這里有三點(diǎn)需要注意的:
                a.在HQL語句中需要使用as操作符指定User的別名,并且需要在構(gòu)造函數(shù)的屬性前面加上別名;
                b.HQL語句中的構(gòu)造函數(shù)在User類中必須要有相應(yīng)的構(gòu)造函數(shù);
                c.生成的實(shí)體對象是VO對象,如果對這些對象調(diào)用Session的saveOrUpdate方法將導(dǎo)致插入新的記錄,而不是更新記錄。
          posted on 2005-06-15 16:33 小米 閱讀(3004) 評論(0)  編輯  收藏 所屬分類: Hibernate
          主站蜘蛛池模板: 定西市| 乐亭县| 泌阳县| 屏东市| 宜良县| 六安市| 西华县| 奉贤区| 革吉县| 衡水市| 灵川县| 略阳县| 特克斯县| 马鞍山市| 夏津县| 江口县| 白朗县| 施秉县| 鄄城县| 安乡县| 德阳市| 余姚市| 闵行区| 双江| 壤塘县| 温州市| 长宁区| 六枝特区| 尉氏县| 桐庐县| 华亭县| 江安县| 灵寿县| 亳州市| 广河县| 孟州市| 湘阴县| 雅安市| 白河县| 台湾省| 朝阳县|