2012-03-07 22 views
1

現在、HQLを使用した単純な集計関数の結果が得られません。ここに私のクエリです:集計HQLクエリの結果の取得

Query q = entityManager.createQuery("SELECT t.id.seq, COUNT(*) AS nb FROM TPEntity t WHERE t.id.num=:num GROUP BY t.id.seq"); 
q.setParameter("num", num); 

デバッガでは、クエリが正しく実行されているようです。しかし、私は結果を抽出する適切な方法を見つけることができません。私はClassCastExceptionトンを取得します。私の現在のコードは、任意の例外を発生させるのではなく、動作しません:これは常にfalseを返します

List<Object> list = (List<Object>) q.getResultList(); 
if(list.size() > 0){ 
    for(Object o : list){ 
    if(o instanceof List){ 
     return true; 
    } 
    } 
} 
return false; 

、イベントデバッガはそのoが型であることで2つの要素を持つ「AbstractList」を見せている場合。もちろんtrueを返すことは最終的なコードではなく、集計値が1より大きいかどうかをテストしたいと思います。これはテストのための中間コードに過ぎません。 あらかじめコードをご報告いただきありがとうございます。完全のために

+0

uはあなたのクエリによって取得されたすべてのレコードを取得します? –

+1

ええ、私は間違いを見つけました。 'List 'の代わりに 'List 'にキャストして、結果を反復するのは簡単です。とにかく答えてくれてありがとう! – Wis

+0

おそらくあなた自身の質問に答えるべきです。 –

答えて

0

、マーク・Wによって提案されたように、ここではキャストのためのソリューションです:

List<Object[]> list = (List<Object[]>) q.getResultList(); 
関連する問題