这是我的第一篇文章,我通常会在这里找到答案,但这次我很难过 .
下面是两个sql查询 - 首先获取值然后对结果执行“总和”几乎将持续时间减半,但使用Hibernate Criteria复制它并不是那么简单 .
从相关的帖子我发现看起来答案很可能是一些DetachedCriteria函数,但我找不到任何与“sum”一起使用的例子 .
SELECT (COUNT(DISTINCT(account))) FROM history;
duration 6363ms
SELECT COUNT(*) FROM (SELECT DISTINCT account);
duration 3624ms
我的第一个查询的Hibernate标准:
Session session = sessionFactory.openSession();
ProjectionList proj = Projections.projectionList()
.add(Projections.countDistinct("account"));
Criteria crit = session.createCriteria(History.class)
.setProjection(proj);
System.out.println(crit.list());