如何从Hibernate Query获取Map对象

时间:2016-02-13 09:46:56

标签: java 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();

2 个答案:

答案 0 :(得分:2)

您可以按如下方式更改查询:

  

&#34;选择新地图(c.EMP_ID为empId,COUNT(*)为empCount)FROM employee c WHERE c.CITY =:someCity&#34;

现在,这将返回带有密钥right_op&amp;的地图列表。 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);
}

答案 1 :(得分:1)

当您使用createSQLQuery时,它将为您提供两个长度数组的结果集。您必须手动构建地图,如下所示

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