我遇到以下问题:
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);
这段代码返回了一些带有我需要的数据的条目。但是,我需要rowcount。有没有一种干净的方式来做到这一点,而不仅仅是做:
return criteria.list().size();
答案 0 :(得分:0)
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);
答案 1 :(得分:0)
如果将其添加到ProjectionList的末尾怎么办?
Projections.rowCount()
我使用以下代码搜索某些内容,然后为其获取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();
答案 2 :(得分:0)
似乎我的问题是由于缺乏分析造成的:
Criteria criteria = getSession().createCriteria(User.class);
criteria.setProjection(Projections.countDistinct("id"));
return (Long) criteria.uniqueResult();
由于我们已经按用户ID进行分组,因此我所要做的就是找到与搜索条件匹配的唯一用户ID的金额。