Pesquisa com Lista

Olá Pessoal,

meu problema é:
Tenho a entidade Aula que possui uma collection de Tag. Quero implementar uma consulta onde, tendo uma collection de tags de entrada, eu retorne as aulas que possuem essas tags. No caso devem ser retornadas as aulas de forma ordenada pela quantidade de tags em comum.
consigo fazer o seguinte:

select aula
from Aula as aula
left join aula.tags as tag
where tag in :tags

com essa query eu consigo pegar todas as aulas que possuem tags dentro desta lista de entrada. Porém não consigo pegar de forma ordenada pela quantidade de tags em comum com a lista de entrada.

espero que nao tenha ficado meio dificil de entender! :stuck_out_tongue:

desde ja agradeço a atencao…
vlw

Acho que você pode resolver com algo parecido com isso:

select aula, count(tag) from Aula as aula left join aula.tags as tag where tag in :tags group by aula order by count(tag)

Pegou a idéia?

mas o hibernate nao vai broncar pelo fato de ter “select aula, count(tag)” ? ele vai conseguir retornar objetos de Aula com esse count ai no select?
vou tentar…

é isso mesmo…
qd eu coloco aula e count no select o hibernate retorna um object q nao da pra fazer catch pra Aula nao…
mas consegui resolver da seguinte forma:

select aula
from Aula as aula  
left join aula.tags as tag  
where tag in (:tags) 
group by aula
order by count(tag) desc

ai no caso eu retirei o count do select e tive que colcoar :tags entre parenteses, se nao da erro

valeu meu caro!