求助hibernateTemplate中怎么用Group By查询?

fenglren 2012-04-27 10:49:28
假如有表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()......的话。我怎么接收返回值啊?
...全文
280 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
宏Lee 2012-04-28
  • 打赏
  • 举报
回复
比完全可以不用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
}
});
monrove 2012-04-28
  • 打赏
  • 举报
回复
“如果前面加 select count()......的话。我怎么接收返回值啊?”
实际返回的是Object[]
superjava_2006 2012-04-28
  • 打赏
  • 举报
回复
select A,count(*) as num from T group by A order by num asc
这个的确返回的是List<Object[])
yellowshine 2012-04-28
  • 打赏
  • 举报
回复
返回多条记录(非实体对象)时,是List<Object[])
fenglren 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

“如果前面加 select count()......的话。我怎么接收返回值啊?”
实际返回的是Object[]
[/Quote]

find返回的是List。不是对象数组吧
fenglren 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

比完全可以不用hql,用sql一样的
this.getHibernateTemplate().execute(
new HibernateCallback<T>() {
@Override
public Long doInHibernate(Session session)
throws HibernateException, SQLException {
String hql="s……
[/Quote]

按你的写的话。那上面例子的sql语句是不是这样:
select A,count(*) as num from T group by A order by num asc
是不是应该这样写才能得到3 1 2啊?还有我没用过这种写法。怎么拿返回值?返回的是List吗?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧