hibernate 如何统计 分组后的结果 的条数

2025-02-20 07:47:07
推荐回答(4个)
回答1:

1.HQL几乎可以办到绝大部分SQL要表达的含义。并且由于支持方言,所以可以跨数据库,所以不是万不得已还是不要使用SQL原生查询接口。你的那个查询用HQL其实很简单的:
String hql = "select count(??) from ?? group by ??";
Query query = session.createQuery(hql);
为了支持分页,只需加上这样的限制:
query.setMaxResults(10);
query.setFirstResult(0);
这样就是显示了10条数据了,setFirstResult方法的参数根据你选择的页数来计算就OK!
2.使用Criteria,Criteria criteria = session.createCriteria(??.class);
criteria.setProjection(Projection.groupProperty("分组统计的字段名称")).list();
返回一个结构是 长度为2的Object[]数组对象的List。注意Criteria可能目前仍然不支持having表达式,但是这种编程式的查询比HQL要好。

回答2:

hql 的方法很有限,hibernate 也可以直接 走SQL的,
Session session = hibernateTemplate.getSessionFactory().getCurrentSession();
SQLQuery sqlQuery = session.createSQLQuery(sql);//这个sql就是你的sql语句.想咋写就咋写

回答3:

我对lucene只是略有了解,所以提点建议吧。
你说的分组统计,指的是分页,还是什么意思?
热门关键字的话,我觉得可以分词后,然后保存到数据库。
然后选择前几个次数最多的。

回答4:

其实就是本地的sql 语句 如果你把相关的hibernate部分代码贴出来就好了 咱得具体问题具体分析