我需要应该返回Map的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();
如果这是唯一的解决方案,那么如何将地图列表转换为单个地图而不进行循环,因为如果查询返回更多行,则循环需要更多时间进行转换。帮助我。
答案 0 :(得分:4)
我建议使用Criteria
然后使用结果转换器来创建地图。查看this官方文档。这为您提供了线索,您可以在网上找到更多样本。
答案 1 :(得分: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]);
}
答案 2 :(得分: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);
}