Как получить наиболее часто встречающийся набор объектов? - PullRequest
0 голосов
/ 29 августа 2011

У меня есть два объекта.

@Entity
class Person extends Model {

    ...
    @OneToOne
    Category category;
}


@Entity 
class Category extends Model {
    ...
}

Мне нужно получить 5 наиболее часто используемых категорий. Как я могу это сделать ?

Спасибо,

РЕДАКТИРОВАТЬ: Решение

List<Object[]> c = Category.find(
    "SELECT p.categorie, count(p.id) FROM Person p " +
    "GROUP BY p.category ORDER BY count(p.category) DESC").fetch(2);

Ответы [ 2 ]

2 голосов
/ 29 августа 2011

Ваш запрос JPQL будет выглядеть примерно так:

SELECT p.category, COUNT(p.category)
FROM Person p
GROUP BY p.category
ORDER BY count(p.category) DESC

И вы бы также сделали query.setMaxResults (5).

1 голос
/ 29 августа 2011
select category.id, count(person.id) 
from Person person 
inner join person.category category
group by category.id
order by count(person.id) desc

И перед выполнением этого запроса вызовите setMaxResults(5) для объекта Query.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...