我有一个这样声明的“标签”属性:
@Entity
public class BlogArticle
{
[...]
@ElementCollection(fetch = FetchType.EAGER)
Set<String> tags =new HashSet<String>();
[...]
}
此属性表示与文章关联的标签。现在我想生成一个标签云。所以我想计算每个标签的频率。
有没有一种简单的方法可以做到这一点?(不创建 Tag 对象?)
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];
}