1

我需要应该返回地图作为结果的 hql 查询,我尝试了 hql 新地图查询,但它返回地图列表,如下所示

    Session session = sessionFactory.getCurrentSession();
    String HQL_QUERY = "select new map(user.id as id, user.fullName as fullName)
    from User user";
    List<Map<String,String>> usersList = session.createQuery(HQL_QUERY).list();

如果这是唯一的解决方案,那么我如何在不循环的情况下将地图列表转换为单个地图,因为如果查询返回更多行,则循环需要更多时间进行转换。帮我。

4

3 回答 3

4

我建议使用Criteria然后结果转换器来创建地图。看看这个官方文档。这给了你一个线索,你可以在网上找到更多的样本。

于 2013-09-28T11:35:30.713 回答
1

创建地图不是 HQL 的工作。这是你的工作。只需遍历从查询中获得的行:

String hql = "select user.id, user.fullName from User user";
List<Object[]> rows = session.createQuery(hql).list();
Map<String, String> result = new HashMap<>();
for (Object[] row : rows) {
    result.put((String) row[0], (String) row[1]);
}
于 2013-09-28T06:30:56.923 回答
0

您可以使用如下地图

Query query = session.createQuery("select new map(id,username) from UserDetails");
List<?> idUsernameList=query.list();
Iterator<?> iterator = idUsernameList.iterator();
Map row=null;
while(iterator.hasNext()){
   row=(Map)iterator.next();
   System.out.println(row);

}
于 2016-01-21T06:41:49.230 回答