我们如何在hibernate中查询返回一个Map对象?

时间:2017-11-07 08:49:35

标签: java hibernate

我有一个实体订阅,它具有以下属性

name,BillOfLading,validTo(Date),ValidFrom(Date)

示例数据:

Name  BillOfLading     ValidTo      ValidFrom
A       100101         1/28/2016    3/28/2017
A       100102         1/29/2016    3/29/2017
B       100103         1/30/2016    3/30/2017
C       100104         1/31/2016    3/31/2017
A       100105         1/28/2016    3/28/2017

这里我试图以Map

的形式获得结果
Map<String,List<Subscription>>

映射包含(键,值)对,其中Name为键,属于指定名称的订阅列表。

假设名称 A 有3条记录所以现在密钥将是 A ,而值将是属于 A 的订阅列表。

此外,我还需要根据数据库中 A 订阅的数量对地图进行排序。

注意:上面是我的场景的简短故事。所以,我没有把我的实际代码。

如果有可能在休眠状态下返回Map,请帮助我。

1 个答案:

答案 0 :(得分:1)

我看不到可以通过JPQL / HQL查询返回Map<String,List<Subscription>>

我从JPQL返回Map,例如:

   @Query("SELECT new map(r.code, r.name) FROM Substance r GROUP BY r.code, r.name")
   List<Map<String, String>> select();

如果您需要复杂的返回类型,请查看Hibernate的ResultTransformer接口及其实现,它可以自定义您想要的结果。我从来没有用过这个。有一篇博文显示了这个界面的用法:Why you should use the Hibernate ResultTransformer to customize result set mappings