2

我有一个这样声明的“标签”属性:

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

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

有没有一种简单的方法可以做到这一点?(不创建 Tag 对象?)

4

1 回答 1

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];
}
于 2012-05-31T05:45:04.783 回答