使用地图键进行分组

时间:2015-05-13 14:28:05

标签: hibernate postgresql dictionary group-by hql

我想对按键分组结果的地图值进行求和。我有以下查询。

SELECT b.foreignEntity.id, KEY(b.map), sum(VALUE(b.map))
  FROM B b GROUP BY b.foreignEntity, KEY(b.map)

不幸的是,它的执行最终会导致以下运行时异常。

Column ?map1_.map_key? must appear in the group by clause or be used in an aggregate function

我尝试通过添加AS将查询更改为以下内容,但看起来HQL无法理解,我想要的是什么。

SELECT b.foreignEntity.id, KEY(b.map) AS group1, sum(VALUE(b.map))
  FROM B b GROUP BY b.foreignEntity, group1

我遇到的例外是

Column ?scoretype? does not exist.

如何使用HQL实现我想要的效果?底层数据库是PostgreSQL。

1 个答案:

答案 0 :(得分:0)

奇怪,但是使用map属性加入实体解决了这个问题。

SELECT b.foreignEntity.id, KEY(m), sum(VALUE(m))
  FROM B b JOIN b.map m GROUP BY b.foreignEntity, KEY(m)