CriteriaのGroup by
hibernate3からの機能っぽい
Criteria criteria = getSession().createCriteria(Hoge.class);
criteria.setProjection(Projections.projectionList()
.add( Projections.rowCount())
.add( Projections.sum("kingaku"))
.add( Projections.groupProperty("torihikiCode")));
この結果はObject[]のListになって戻ってくる。
List objectlist = criteria.list();
Iterator it = objectlist.iterator();
while (it.hasNext()) {
Object o = it.next();
if (o instanceof Object) {
Object a = (Object[]) o;
System.out.println*1;
}
else {
//ここにはこないと思うが一応
throw new Exception("Help me");
}
}
配列aの順番はおそらく.add( Projections.〜)した順番。
.add( Projections.groupProperty〜)したものが他のオブジェクトと関連させてある場合(<-なんと言うのだ?)、a[2]のようにオブジェクトが戻ってくる。
検索条件が固定ならHQLの方がいいとは思うが、実のところ使い分けがよく分からなかったり。
と言うか、many-to-oneを含んでいたせいか、さっぱりHQLで結合できなかったりして・・・。
ドキュメント
http://www.hibernate.org/hib_docs/v3/reference/en/html/querycriteria.html
*1:Integer) a[0]); System.out.println((Long) a[1]); System.out.println(((TorihikiCodeMas) a[2]).toString(