Ich versuche, eine einfache Abfrage in Hibernate zu schreiben, bei der ich einfach eine absteigend sortierte Liste von Benutzern mit den meisten Punkten bekomme. Im Grunde genommen versuche ich diese Abfrage zu schreiben select user_id from user_points group by user_id order by sum(points) desc
. Das funktioniert auf der Postgres-Datenbank, auf der ich arbeite.
Ich habe die folgende HSQL-Abfrage select c.user from UserPoints c group by c.user order by sum(c.points) desc
. Die Points-Tabelle hat eine Spalte namens user_id, die sich auf die Benutzertabelle bezieht. In unserem Mapping wird user_id einer Benutzerklasse zugeordnet.
Wenn ich jedoch diese Abfrage ausführe, erhalte ich die Meldung "user1_.user_id" muss in der GROUP BY-Klausel erscheinen oder in einer Aggregatfunktion verwendet werden. Ich habe versucht, nach ähnlichen Problemen zu suchen, bin aber nur auf Folgendes gestoßen: JPA Query/Hibernate: Column must appear in the GROUP BY clause or be used in an aggregate function, das unbeantwortet ist.
Ich stecke ein wenig fest mit HQL, weil das andere, was ich tun muss, ist, mich mit einer Tabelle zu verbinden, die keine zugeordnete Assoziation hat (aber auch einen user_id-Schlüssel hat). Ich versuche auch, diese Abfrage so schnell wie möglich zu halten. Jede Hilfe wäre wirklich sehr geschätzt, da ich wirklich verwirrt bin, warum dies nicht funktioniert.