Java 在Hibernate中计算查询结果中的行数
我面临以下问题:Java 在Hibernate中计算查询结果中的行数,java,hibernate,Java,Hibernate,我面临以下问题: Criteria criteria = getSession().createCriteria(User.class); ProjectionList projectionList = Projections.projectionList(); projectionList.add(Projections.property("id")); projectionList.add(Projections.countDistinct("friend_
Criteria criteria = getSession().createCriteria(User.class);
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.property("id"));
projectionList.add(Projections.countDistinct("friend_id"));
projectionList.add(Projections.property("registrationDate"));
projectionList.add(Projections.property("lastLoginDate"));
criteria.setProjection(projectionList);
这段代码返回了我需要的几个数据条目。但是,我需要它的行数。有没有一种干净的方法来做这件事,而不仅仅是做一个:
return criteria.list().size();
?如果将此添加到投影列表的末尾,会怎么样
Projections.rowCount()
我使用下面的代码搜索某个内容,然后获取该内容的行数
Criteria criteria = session.createCriteria(LogEntryOracle.class);
if (search != null && !search.isEmpty()) {
criteria.add(Restrictions.ilike("xml", search, MatchMode.ANYWHERE));
}
criteria.setProjection(Projections.rowCount());
return (Number) criteria.uniqueResult();
我的问题似乎是由于缺乏分析造成的:
Criteria criteria = getSession().createCriteria(User.class);
criteria.setProjection(Projections.countDistinct("id"));
return (Long) criteria.uniqueResult();
由于我们已经按照用户ID进行分组,因此我所要做的就是查找与搜索条件匹配的唯一用户ID的金额。是的,很抱歉,我必须将查询更改为更接近我使用的内容,我确实检查了该答案,但它没有真正回答我的问题。查询中有countDistinct,使用普通计数会给我错误的条目数。很好,您找到了解决方案。最好发布并接受它作为您自己的答案。这种方法会覆盖投影列表,导致数据行计数不正确。请注意,在投影列表中有一个“count distinct”,它对用户进行分组,并统计他们分配了多少不同的好友id。我已经找到了问题的解决方案,我将用我的解决方案更新帖子。我没有尝试这个解决方案,因为我找到了一个更简单的方法。
Criteria criteria = getSession().createCriteria(User.class);
criteria.setProjection(Projections.countDistinct("id"));
return (Long) criteria.uniqueResult();