2017-06-27 1 views
1
select r,avg(ur.score) 
from UserResource ur 
join Resource r on ur.resourceId=r.id 
group by ur.resourceId 
order by avg(ur.score) desc 

La requête doit retourner les résultats ci-dessus dans avg(ur.score) ordre, mais ce que je reçois sont en fait dans l'ordre r.id. Si je change la requête en dessous qui ne sélectionne que avg(ur.score), les résultats sont dans l'ordre avg(ur.score).HQL clause order by ne fonctionne pas

select avg(ur.score) 
from UserResource ur 
join Resource r on ur.resourceId=r.id 
group by ur.resourceId 
order by avg(ur.score) desc 

Pourquoi la clause order by dans la première requête ne fonctionne pas et comment le résoudre?

+0

Pourquoi avez-vous un journal de fournisseur de JPA et vous ne le lisez pas, quand il vous indique le SQL invoqué, et par conséquent la réponse probable à votre question? –

Répondre

0

Il semble y avoir un problème avec votre requête et ce n'est pas la commande qui pose problème.

Vous essayez de grouper par une colonne qui ne fait pas partie de l'instruction select. Comme ur.resourceId=r.id, vous pouvez essayer quelque chose suivante:

select r.id,avg(ur.score) 
from UserResource ur 
join Resource r on ur.resourceId=r.id 
group by r.id 
order by avg(ur.score) desc