1. 程式人生 > >hibernate hql 查詢指定欄位並獲取結果集,多表查詢結果集

hibernate hql 查詢指定欄位並獲取結果集,多表查詢結果集

原文轉自:http://blog.csdn.net/ljfbest/article/details/7472042

在hibernate中,用hql語句查詢實體類,採用list方法的返回結果為一個List,該List中封裝的物件分為以下三種情況: 
1.查詢全部欄位的情況下,如"from 實體類",list中封裝的物件為實體類本身,各屬性都將得到填充。 
2.只查詢一個欄位,預設情況下,list中封裝的是Object物件。 
3.查詢兩個或兩個以上的欄位,預設情況下,list中封裝的是Object[],長度與所查詢的欄位數一致。 
對於後兩種情況,用標籤遍歷時不太方便,因為無法直接轉換成實體類的物件。比較簡單的解決方法是: 

の:在hql中使用select new 包名.類名(屬性1,屬性2……) from 實體類,同時在實體類中新增帶參的構造方法,引數的個數和順序與(屬性1,屬性2……) 保持一致,這樣我們得到的list中存放的依然是實體類的物件,所查詢到的屬性得到了填充,使用起來更為方便。 
  の:hql查詢多表部分欄位,select new 包名.表1實體類名(表1.屬性1,表2.屬性2……) from 表1實體類,表2實體類 where 表1.ID=表2.ID(即相關聯的欄位),同時在要返回的表1實體類中新增表2的屬性和帶參的構造方法,引數的個數和順序與(表1.屬性1,表2.屬性 2……) 保持一致 

例如要查詢Problem 中的pid,score,title,totalAccept,totalSubmission,unSee 

public class Problem {
	private int pid;
	private int score;
	private int timeLimit;
	private int memoryLimit;
	private int totalAccept;
	private int totalSubmission;
	private int unSee;
	private String title;
	private String description;
	private String input;
	private String output;
	
	public Problem(int pid, int score,String title, int totalAccept, int totalSubmission,
			 int unSee) {
		super();
		this.pid = pid;
		this.score = score;
		this.totalAccept = totalAccept;
		this.totalSubmission = totalSubmission;
		this.unSee = unSee;
		this.title = title;
	}
	//省略getter 和 setter
}

查詢語句如下 
Query query=session.createQuery("select new Problem(pid,score,title,totalAccept,totalSubmission,unSee)
 from Problem order by pid");
//query.setFirstResult(firstResult); //分頁函式
//query.setMaxResults(maxResutl);
	
List<Problem> problems=query.list();//返回的還是Problem物件

PS:網上說在這個語句外層加了一個distinct也可以用,那麼應該只是對結果集的一個封裝,原有的函式應該還是都可以用的。 

相關推薦

Hibernate hql 查詢 指定 獲取結果

1. 查詢整個對映物件所有欄位 Java程式碼        //直接from查詢出來的是一個對映物件,即:查詢整個對映物件所有欄位                

hibernate hql 查詢指定獲取結果查詢結果

原文轉自:http://blog.csdn.net/ljfbest/article/details/7472042在hibernate中,用hql語句查詢實體類,採用list方法的返回結果為一個List,該List中封裝的物件分為以下三種情況: 1.查詢全部欄位的情況下,如

使用左連線查詢指定值最高的記錄

1、查詢test表中wealth最大的記錄的name和wealth select s1.name,s1.wealth from test s1  left join test s2 on s1.wealth<s2.wealth where s2.name is null; 2

如何從mysql資料庫中查詢指定且符合條件的資料 然後拼接成json字串最後匯出json檔案

SELECT CONCAT("{'name':'",IFNULL(Name,''),"',","'sex':'",IFNULL(Sex,''),"',","'age':'",IFNULL(Age,''),"',", "'phone':'",IFNULL(Phon

SQL語句查詢重複按數量排序

SQL語句 描述:exhibitiononline表主鍵exhiid,    exhibitor表有外來鍵 exhid,對應表 exhibitiononline的主鍵exhiid;           exhibitiononline表--------->      

用MongoTemplate查詢指定的正確奧義

這裡舉一個我個人犯的一個錯誤,希望看到此博文的人能避免犯同樣的錯誤: 在CompanyInfo這個類中,它其中包含一個List型別的AccountInfo屬性。然後好戲開始了,我希望通過BasicDB

ThinkPHP join() table()方法的使用查詢

itl prefix top file span mod sel highlight ble table [php] view plain copy $list = M()->table(‘user1 a, user2 b‘)-&

ORM回顧 之 單查詢 many2many 中介模型

ron clear ont color queryset 字段 boolean 一對多 sta python獨立的ORM框架 1 SQLAlchemy ORM:對象關系映射 模型類 --------- 表 類下的屬性變

Python sqlalchemy增刪改查查詢join操作

sqlalchemy物件: from sqlalchemy import Column from sqlalchemy import DateTime from sqlalchemy import BIGINT from sqlalchemy import IN

MySQL之連線查詢查詢(適合練習和初學)

Join連線圖 針對以上的多表查詢,我們嘗試做以下的實驗: Join實驗: CREATE TABLE `t_dept` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `deptName` VARCHAR(30) DEFAULT

SSM框架學習-MyBatis篇 SQL對映檔案——實現高階結果對映和查詢

SSM框架學習-MyBatis篇 SQL對映檔案——實現高階結果對映(多表查詢) 問題情境:比如有張表,使用者和使用者詳情,這兩張表裡面沒長表都有一個id欄位,這兩個表的id欄位都是對應的。 實體類裡面分別對應兩個實體類,user和userdetail,還有一個很重要的實

day055&056Django之操作查詢

本節內容: 1、回顧一對一、一對多、多對多的表結構關係 2、建立模型 3、新增表記錄 4、基於物件的跨表查詢 5、基於雙下劃線的跨表查詢 6、聚合查詢與分組查詢 7、F查詢與Q查詢 一、回顧一

PageHelpher、MyBatis關聯查詢查詢分頁問題

一般MyBatis作為ORM框架,需要做分頁一般會選擇使用PageHelper。PageHelper非常強大的分頁外掛,和mybatis整合也非常方便。PageHelper對單表分頁或者整體結果集分頁是比較方便的。 不過有時我們會遇到這樣的問題。利用MyBatis做多表

查詢千萬數量級分頁儲存過程,可支援查詢,任意排序

Create PROCEDURE usp_PagingLarge @TableNames VARCHAR(200),     --表名,可以是多個表,但不能用別名 @PrimaryKey VARCHAR(100),     --主鍵,可以為空,但@Order為空時該值不能為

select單查詢查詢查詢

DML:語句,常用的select ,insert into ,delete,updata select 語句: select 語句一般用法為: select 欄位名 from tb_name where 條件 ; select 查詢語句型別一般分

hibernate,高階查詢指定查詢返回對應實體

String alias = “user_”; //查詢時的table別名 DetachedCriteria dc = DetachedCriteria.forClass(User.class,ali

MongoDB原生態API使用 + 查詢文件顯示指定

一、pom依賴<properties> <mongodb.version>3.6.3</mongodb.version> </properties> <dependencies> <dependency&g

hibernatehql怎麼查詢某個

List results = session.find("select count(*), avg(user.age) from User as user"); ListIterator iterator = results.listIterator(); Object

Hibernate中用hql查詢部分

在hibernate中,用hql語句查詢實體類,採用list方法的返回結果為一個List,該List中封裝的物件分為以下三種情況: 1.查詢全部欄位的情況下,如"from 實體類",list中封裝的物件為實體類本身,各屬性都將得到填充。 2.只查詢一個欄位,預設情況下

Hibernate中用hql查詢部分 可解決異常java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to

hql查詢單表部分欄位: 在hibernate中,用hql語句查詢實體類,採用list方法的返回結果為一個List,該List中封裝的物件分為以下三種情況: 1.查詢全部欄位的情況下,如"from 實體類",list中封裝的物件為實體類本身,各屬性都將得到填充。 2.只查詢一個欄位,預設情況下,list中封