Hibernate屬性查詢簡單講述

Hibernate屬性查詢簡單講述


這裏介紹Hibernate屬性查詢:使用HQL的時候並不是把 hbm.xml 裏面的所有屬性取出來,只取出有用的屬性便可以了。

AD

本文向大家介紹Hibernate屬性查詢,可能好多人還不瞭解Hibernate屬性查詢,沒有關係,看完本文你肯定有不少收穫,希望本文能教會你更多東西。

今天說一下Hibernate屬性查詢:使用HQL的時候並不是把 hbm.xml 裏面的所有屬性取出來,只取出有用的屬性便可以了,舉個例子:

  1. List list =session.createQuery
    ("select user.name,user.age from TUSER user").list();  
  2. Iterator it = list.iterator();  
  3. while(it.hasNext())  
  4. ...{  
  5. Object[] results = (Object[])it.next();  
  6. System.out.println(results[0]);  
  7. System.out.println(results[1]);  

如果覺得返回數組的方式不夠符合面向對象的風格,也可以使用構造對象實例的方法對數組進行封裝:

  1. List list = this.session.createQuery
    (" select new TUser(user.name,user.age) from TUser as user").list();  
  2. Iterator if = list.iterator();  
  3. while(it.hasNext())  
  4. ...{  
  5. TUser user = (TUser)it.next();  
  6. System.out.println(user.getName());  

着愛與那個就比較形象化一些,但是有一點要注意的是這個查詢結果的TUser對象僅僅是一普通的 java 對象,進用於對查詢結果的封裝,除了在構造是賦予的屬性值外,其他屬性均爲未賦值狀態,這就意味着,我們無法通過 Session 對此對象進行更新,如果企圖對 user 對象更新將導致向數據庫插入一條新的記錄,而不是更新原有記錄:

  1. while(it.hasNext())  
  2. ...{  
  3.  TUser user = (TUser)it.next();  
  4. user.setName("test");  
  5. session.saveOrUpdate(user);  
  6. //這裏將導致一次 insert 操作,而非 update  

也可以使用像 SQL 那樣的統計函數,比如:

  1. selet count(*),min(user.age) from TUser as user  
  2. select upper(user.name) from TUser as user  
  3. select distinct user.name from TUser as user 

以上介紹Hibernate屬性查詢。

發佈了20 篇原創文章 · 獲贊 17 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章