简体   繁体   English

如何退回地图 <Key, Value> 与Hibernate \\ HQL

[英]How to return Map<Key, Value> with Hibernate\HQL

I have an entry as follow: 我有一个条目如下:

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

I would like to query this table and put the results into a HashMap! 我想查询该表并将结果放入HashMap! as follow: 如下:

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

Is this possible to put the entity as the value of the map? 是否可以将实体作为地图的值?

Can I get a code example? 我可以得到一个代码示例吗?

Yes, for example: 是的,例如:

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

But that will return a list of Maps. 但这将返回地图列表。 You should take a look here to understand better. 您应该在这里看看以更好地了解。

Edit: To explain better, the return will be something like this: 编辑:为了更好地解释,返回将是这样的:

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

It is one Map for each record. 每条记录一个地图。 To put all in only one map, unfortunately, it has to be manually: 不幸的是,要将所有地图放到一张地图中,必须手动进行:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM