Hibernate中如何用HQL查詢部分字段

HQL查詢單表部分字段:ui

在hibernate中,用hql語句查詢實體類,採用list方法的返回結果爲一個List,該List中封裝的對象分爲如下三種狀況:this

1.查詢所有字段的狀況下,如"from 實體類",list中封裝的對象爲實體類自己,各屬性都將獲得填充。spa

2.只查詢一個字段,默認狀況下,list中封裝的是Object對象。hibernate

3.查詢兩個或兩個以上的字段,默認狀況下,list中封裝的是Object[],長度與所查詢的字段數一致。對象

對於後兩種狀況,用標籤遍歷時不太方便,由於沒法直接轉換成實體類的對象。比較簡單的解決方法是:table

在hql中使用 select new 包名.類名(屬性1,屬性2……) from 實體類,同時在實體類中添加帶參的構造方法,參數的個數和順序與(屬性1,屬性2……) 保持一致,這樣咱們獲得的list中存放的依然是實體類的對象,所查詢到的屬性獲得了填充,使用起來更爲方便。List


hql查詢多表部分字段:select

select new 包名.表1實體類名(表1.屬性1,表2.屬性2……) from 表1實體類,表2實體類 where 表1.ID=表2.ID(即相關聯的字段),同時在要返回的表1實體類中添加表2的屬性和帶參的構造方法,參數的個數和順序與(表1.屬性1,表2.屬性2……) 保持一致遍歷

注:本身新增構造方法時,須要同時寫上默認的空的構造方法,否則程序會提示找不到默認的構造方法。程序

例:

 /**
  * 添加構造方法,以便於能耗表進行列表查詢
  * @param mid
  * @param typeid
  * @param buildingname
  * @param ownername
  * @param countmonth
  * @param sums
  */
 public Energytable(String id, String typeid, String buildingname,
   String ownername, Date countmonth, Double sums) {
  super();
  this.id = id;
  this.typeid = typeid;
  this.buildingname = buildingname;
  this.ownername = ownername;
  this.countmonth = countmonth;
  this.sums = sums;
 }

 public Energytable() {  super(); }

相關文章
相關標籤/搜索