2016-02-13 55 views
1

目前我得到的對象的列表形式Hibernate查詢我怎樣才能從Hibernate查詢地圖對象

我的代碼是:

session.createSQLQuery("SELECT c.EMP_ID, COUNT(*) FROM employee c WHERE c.CITY=:someCity") 
List<Object[]> objList =myQuery.list(); 

我在這裏只得到兩個參數EMP_ID和COUNT

有什麼辦法,所以我可以地圖 像

Map<int empId, int count> objList =myQuery.someMethod(); 
+4

可能重複http://stackoverflow.com/questions/7876724/how-to-return-mapkey-value-with-hql,HTTP://計算器。 com/questions/925363/how-to-fetch-hibernate-query-result-as-associative-array-of-list-hashmap –

回答

1

您可以暢你e查詢,如下所示:

「選擇新的地圖(如c.EMP_ID EMPID,COUNT(*)作爲empCount)FROM員工c其中c.CITY =:someCity」

現在這個意願返回你的鑰匙地圖列表empId & empCount

下面是一個簡單的代碼片段:

List<?> objList = session.createQuery("SELECT new map(c.EMP_ID as empId, 
        COUNT(*) as empCount) FROM employee c WHERE c.CITY=:someCity").list(); 
Iterator<?> myRows = objList.iterator();  
while (myRows.hasNext()) { 
    Map row = (Map) myRows.next(); 
    System.out.println(row); 
} 

輸出:

{empId=1, empCount=10} 
{empId=2, empCount=20} 
{empId=3, empCount=30} 
+0

它只適用於HQL查詢而非SQL查詢 –

1

當您使用createSQLQuery,它會給你一個結果組兩個長數組。您必須手動建立映射,如下面

for(Object[] row : objList) { 
    map.put(row[0], row[1]); 
}