如何获得最常出现的对象集?

时间:2011-08-29 12:00:25

标签: java hibernate jpa playframework

我有两个对象。

@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 个答案:

答案 0 :(得分:2)

你的JPQL查询是这样的:

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

你也可以查询.setMaxResults(5)。

答案 1 :(得分:1)

select category.id, count(person.id) 
from Person person 
inner join person.category category
group by category.id
order by count(person.id) desc

在执行此查询之前,请在Query对象上调用setMaxResults(5)