日期:2014-05-19  浏览次数:20691 次

求助hibernateTemplate中怎么用Group By查询?
假如有表T(A,B)
A B
1 2
1 3
1 4
2 3
3 4
3 5
3 6
3 7
我希望按照重复次数的多少升序找出A。例如上面,我要的值是3 1 2。
请问用hibernateTemplate怎么实现?
hibernateTemplate.find("from T t Group By t.A order by t.A asc")这样不行。
请问还有别的方法吗?
如果前面加 select count()......的话。我怎么接收返回值啊?

------解决方案--------------------
比完全可以不用hql,用sql一样的
this.getHibernateTemplate().execute(
new HibernateCallback<T>() {
@Override
public Long doInHibernate(Session session)
throws HibernateException, SQLException {
String hql="select id,count(*) as num from T group by id order by id asc";
Query query = session
.createSQLQuery(hql);
//这里得到了就是分组后的东西,你在得到组装成你的T,还有你的分组语句有问题的,我相信你在直接用sql的时候会报一个因为该列没有包含在聚合函数或 GROUP BY 子句中错误,,用法看我的,或者google
}
});