我试图在休眠状态下编写一个简单的查询,在该查询中,我得到的是得分最高的用户降序列表。 基本上,我试图写此查询select user_id from user_points group by user_id order by sum(points) desc 这适用于我正在处理的Postgres数据库。

我有以下HSQL查询select c.user from UserPoints c group by c.user order by sum(c.points) desc 点表中有一个名为user_id的列,它引用用户表。 在我们的映射中,user_id被映射到User类。

但是,当我运行此查询时,我得到的列“ user1_.user_id”必须出现在GROUP BY子句中或在聚合函数中使用。 我尝试搜索类似的问题,但实际上只是想出了这一点: JPA查询/休眠:列必须出现在GROUP BY子句中或在无法回答的聚合函数中使用

我有点受HQL困扰,因为我需要做的另一件事是在没有映射关联(但也有user_id键)的表上进行联接。 我也试图保持此查询尽可能快。 任何帮助将不胜感激,因为我对为什么它不起作用感到非常困惑。

===============>>#1 票数:0

所以我想我可能已经找到了问题所在。 实际上,我们有两个到user_id列的映射。 一个是属性,其中将user_id设置为常规long,另一个属性是一个映射,将其映射到用户类。 我将日志记录级别设置为调试,以便可以看到hibernate正在创建的查询,并且好像正在使用将select c.user转到user表中的所有列(这意味着它正确使用了多对一映射) ),但出于某些原因,它在group by子句中将c.user转换为user_id属性。 由于我无法更改映射,而且期限紧迫,因此我选择只编写常规SQL查询来获取用户ID,然后运行另一个条件查询以获取该ID列表中的所有用户。

  ask by Niro_S translate from so

未解决问题?本站智能推荐: