最も多くのポイントを持つユーザーの降順リストを取得する単純なクエリを休止状態で作成しようとしています。基本的に私はこのクエリを書こうとしていますselect user_id from user_points group by user_id order by sum(points) desc
。これは、私が取り組んでいる Postgres db で動作します。
次の HSQL クエリがありますselect c.user from UserPoints c group by c.user order by sum(c.points) desc
。Points テーブルには、user テーブルを参照する user_id という列があります。このマッピングでは、user_id は User クラスにマップされます。
ただし、このクエリを実行すると、列 "user1_.user_id" が GROUP BY 句に表示されるか、集計関数で使用される必要があります。同様の問題を検索してみましたが、実際にはこれしか思いつきませんでした: JPA Query/Hibernate: Column must appear in the GROUP BY clause or be used in a aggregate function that is unanswered.
他に行う必要があるのは、マップされた関連付けを持たない (しかし user_id キーを持つ) テーブルに参加することであるため、私は HQL に行き詰まっています。また、このクエリをできるだけ高速に保つようにしています。なぜこれが機能しないのか本当に混乱しているので、どんな助けも本当にありがたいです。