如何使用Hibernate \ HQL返回Map <key,value =“”>

时间:2015-07-20 15:58:15

标签: java hibernate hql

我有一个条目如下:

@Entity
@Table(name="rank")
class Rank implements Serializable {
 private int id;
 private int rank_id;
 private date creationDate;
 ...
 // getters\setters...
}

我想查询此表并将结果放入HashMap! 如下:

Map<Integer, Rank> = session.createSQL("select new map...").list();

这可以将实体作为地图的值吗?

我可以获得代码示例吗?

1 个答案:

答案 0 :(得分:6)

是的,例如:

Select new Map(r.id,r) FROM Rank r

但是这将返回地图列表。你应该看看here以便更好地理解。

编辑:为了更好地解释,返回将是这样的:

List<Map<Long, Rank>> ranks = (List<Map<Long, Rank>>) session.createQuery("select new Map<r.rankId,r> FROM Rank r").list();

每条记录都是一张地图。不幸的是,要将所有地图放在一个地图中,必须手动:

List<Rank> ranks = (List<Rank>) session.createQuery("select new r FROM Rank r").list();
Map<Long, Rank> mapRanks  = new HashMap<Long, Rank>();
for (Rank rank : ranks) {
  if (!map.contains(rank.getId()) {
    map.put(rank.getId(), rank);
  }
}