[英]Count rows in the result of a query in Hibernate
我面臨以下問題:
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();
?
Criteria criteria = session.createCriteria(Track.class)
.setProjection(Projections.rowCount());
List result = criteria.list();
if (!result.isEmpty()) {
Integer rowCount = (Integer) result.get(0);
System.out.println("Total records: " + rowCount);
如果將此添加到ProjectionList的末尾怎么辦?
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的數量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.