Java 如何返回地图<;关键、价值>;使用Hibernate\HQL

Java 如何返回地图<;关键、价值>;使用Hibernate\HQL,java,hibernate,hql,Java,Hibernate,Hql,我有一个条目如下: @Entity @Table(name="rank") class Rank implements Serializable { private int id; private int rank_id; private date creationDate; ... // getters\setters... } Map<Integer, Rank> = session.createSQL("select new map...").list(); 我想

我有一个条目如下:

@Entity
@Table(name="rank")
class Rank implements Serializable {
 private int id;
 private int rank_id;
 private date creationDate;
 ...
 // getters\setters...
}
Map<Integer, Rank> = session.createSQL("select new map...").list();
我想查询这个表并将结果放入HashMap! 详情如下:

@Entity
@Table(name="rank")
class Rank implements Serializable {
 private int id;
 private int rank_id;
 private date creationDate;
 ...
 // getters\setters...
}
Map<Integer, Rank> = session.createSQL("select new map...").list();
Map=session.createSQL(“选择新映射…”).list();
是否可以将实体作为映射的值

可以给我一个代码示例吗?

可以,例如:

从秩r中选择新地图(r.id,r)

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

编辑:为了更好地解释,返回内容如下:

List<Map<Long, Rank>> ranks = (List<Map<Long, Rank>>) session.createQuery("select new Map<r.rankId,r> FROM Rank r").list();
List ranks=(List)session.createQuery(“从秩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);
  }
}
List ranks=(List)session.createQuery(“从秩r中选择新r”).List();
Map mapRanks=新建HashMap();
for(等级:等级){
如果(!map.contains(rank.getId()){
map.put(rank.getId(),rank);
}
}

我不这么认为,但解决办法是执行sql获取列表,遍历并创建映射。复制它不是复制-我想知道当映射的值是Hibernate实体(表中的行)时,创建结果HashMap的语法是如何工作的。如果可能的话…谢谢。我会再看看这个链接。你的意思是这样的吗?Map ranks=(Map)session.createSQLQuery(“从秩r中选择新映射”).list();