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