簡體   English   中英

在Hibernate中查詢結果中的行數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM