2012-05-31 2 views
2

У меня есть свойство «метка» объявленное так:@ElementCollection подсчет частота

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

Это свойство представляет тег, связанные с статьей. Теперь я хочу создать облако тегов. Поэтому я хочу подсчитать частоту каждого тега.

Есть ли простой способ сделать это? (без создания объекта Tag?)

ответ

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]; 
} 
+0

Удивительный! Спасибо. Мне просто пришлось заменить count (1) на count (*). – tibo

Смежные вопросы