@ElementCollection计数频率

时间:2012-05-31 00:53:13

标签: java hibernate jpa jpql

我有一个像这样声明的“tags”属性:

@Entity
public class BlogArticle
{
    [...]
    @ElementCollection(fetch = FetchType.EAGER)
    Set<String> tags =new HashSet<String>();
    [...]
}

此属性表示与文章关联的标记。现在我想生成一个标签云。所以我想计算每个标签的频率。

有一种简单的方法吗? (没有创建Tag对象?)

1 个答案:

答案 0 :(得分:2)

String hql = "select t, count(1) from BlogArticle a inner join a.tags t group by t";
List tagCounts = createQuery( hql ).list();

Iterator itr = tagCounts.iterator();
while ( itr.hasNext() ) {
    Object[] tagCount = (Object[]) itr.next();
    String tag = (String) tagCount[0];
    Long count = (Long) tagCount[1];
}