2016-02-13 30 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]); 
}