总和预测和结果约束 [英] Sum projection and results constraint

查看:134
本文介绍了总和预测和结果约束的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

数据库中有100个实体。我希望通过前20个实体的某些属性来获得总和
$ b $ pre $ code Criteria cr = getSession()。createCriteria(Entity.class);
cr.setFirstResult(0);
cr.setMaxResults(20);
cr.setProjection(Projections.sum(propertyName));
Double sum = cr.uniqueResult();

但是条件返回所有实体的总和,因为setMaxResults(20)限制了总和值结果,并且这是一个对象 - uniqueResult。意味着建设是不正确的。如何使用标准正确地获得多个实体的总和?

解决方案

如果您无法在ID上添加约束条件(例如 .add(Restrictions.le(id,20));如果ID的顺序是这样的话,这将起作用),那么我看到的唯一可能的解决方案是分成2个Criterias :

  //首先,获取前20个元素的id 
List< Integer> ids = session.createCriteria(Entity.class)
.setProjection(Projections.property(id))
.setMaxResults(20)
.list();

//然后,在所需字段上做一笔
Long sum =(Long)session.createCriteria(Entity.class)
.setProjection(Projections.sum(propertyName ))
.add(Restrictions.in(id,ids))
.uniqueResult();


I have 100 entities in db. I want to get sum by some property of first 20 entities

Criteria cr = getSession().createCriteria(Entity.class);
cr.setFirstResult(0);
cr.setMaxResults(20);
cr.setProjection(Projections.sum("propertyName"));
Double sum = cr.uniqueResult();

but criteria returns sum of all entities because setMaxResults(20) restricts sum values result and that is one object - uniqueResult. Mean that construction is incrorrect. How to get sum of several entities using criteria properly?

解决方案

If you cannot add a constraint on the ID (e.g. .add(Restrictions.le("id", 20)); this would work if the IDs are in order), then the only possible solution I see is to split in in 2 Criterias:

// First, fetch first 20 elements' ids
List<Integer> ids = session.createCriteria(Entity.class)
        .setProjection(Projections.property("id"))
        .setMaxResults(20)
        .list();

// Afterwards, do a sum on the desired field
Long sum = (Long) session.createCriteria(Entity.class)
        .setProjection(Projections.sum("propertyName"))
        .add(Restrictions.in("id", ids))
        .uniqueResult();

这篇关于总和预测和结果约束的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆