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

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

                2.在HQL中用new操作符生成實(shí)體對(duì)象,例如:"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());
              }

                這時(shí)list方法返回的List中的每一個(gè)元素都是User實(shí)體對(duì)象。這里有三點(diǎn)需要注意的:
                a.在HQL語句中需要使用as操作符指定User的別名,并且需要在構(gòu)造函數(shù)的屬性前面加上別名;
                b.HQL語句中的構(gòu)造函數(shù)在User類中必須要有相應(yīng)的構(gòu)造函數(shù);
                c.生成的實(shí)體對(duì)象是VO對(duì)象,如果對(duì)這些對(duì)象調(diào)用Session的saveOrUpdate方法將導(dǎo)致插入新的記錄,而不是更新記錄。
          posted on 2005-06-15 16:33 小米 閱讀(2999) 評(píng)論(0)  編輯  收藏 所屬分類: Hibernate
          主站蜘蛛池模板: 彭阳县| 呼玛县| 吉木乃县| 姜堰市| 宁陕县| 镇巴县| 米泉市| 疏勒县| 吉木萨尔县| 廉江市| 浙江省| 镇赉县| 江孜县| 韶山市| 应用必备| 潼关县| 邵武市| 留坝县| 灯塔市| 玉溪市| 永济市| 云梦县| 德阳市| 乌恰县| 信丰县| 枝江市| 斗六市| 塘沽区| 通辽市| 肇州县| 乐平市| 惠安县| 伊川县| 新化县| 恩平市| 文成县| 中阳县| 晋宁县| 南昌县| 故城县| 保山市|