【问题标题】:How can i get Map object from Hibernate Query [duplicate]我如何从 Hibernate Query 中获取 Map 对象 [重复]
【发布时间】:2016-05-24 12:47:39
【问题描述】:

目前我正在从休眠查询中获取对象列表

我的代码是:

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();

【问题讨论】:

标签: java hibernate


【解决方案1】:

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

"SELECT new map(c.EMP_ID as empId, COUNT(*) as empCount) FROM employee c WHERE c.CITY=:someCity"

现在这将返回带有键empIdempCount 的地图列表。

这是一个快速代码sn-p:

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}

【讨论】:

  • 它只适用于 HQL 查询而不是 SQL 查询
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 2020-03-03
    • 2016-03-04
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多