java - 与hibernate分组的其他字段一起计数

标签 java sql hibernate group-by criteria

我想返回 count 行与 hibernate 组中的一些其他字段,但我的实体类中没有任何字段表示计数。例如我有一个支付实体类:

class Payment
{
    private Long id;
    private String totalCode;
    private String activityCode;
    private Long amount;

    // other fields and setter/getters
}

sql查询:

select count(*), sum(p.amount), p.total_code, p.activity_code 
from  tb_payment p
group by p.total_code,p.activity_code

和我的 hibernate 标准:

Session session = getCurrentSession();
ProjectionList projectionList = Projections.projectionList();        
projectionList.add(Projections.groupProperty("totalCode"))
        .add(Projections.groupProperty("activityCode"))
        .add(Projections.sum("amount"))
        .add(Projections.count("id"));
Criteria criteria  = session.createCriteria(Payment.class);
criteria.setProjection(projectionList);
List<Payment> payments = criteria.list();

正如我所说,我的问题是我不知道在哪里/如何访问计数值(来自 criteria.list())!?

最佳答案

我认为这是您的代码的正确版本:

Session session = getCurrentSession();
ProjectionList projectionList = Projections.projectionList();        
projectionList.add(Projections.groupProperty("totalCode"))
        .add(Projections.groupProperty("activityCode"))
        .add(Projections.sum("amount"))
        .add(Projections.rowCount());
Criteria criteria  = session.createCriteria(Payment.class);
criteria.setProjection(projectionList);
List<Object[]> payments = criteria.list();
for (Object[] payment : payments) {
    System.out.println("totalCode: " + payment[0]);
    System.out.println("activityCode: " + payment[1]);
    System.out.println("amountSum: " + payment[2]);
    System.out.println("rowCount: " + payment[3]);
}

关于java - 与hibernate分组的其他字段一起计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23044565/

相关文章:

MySQL:ORDER BY 使用长字符串产生错误的顺序

SQL - 一对多与多个 "One"表的最佳实践

MySQL不释放内存

java - 使用 log4j2.xml 的 Apache Log4j2 包特定日志记录

java - 在 IntelliJ 中,如何一步运行 Maven 构建、执行生成的应用程序并连接调试器?

java - 了解 spring 和注释,我必须在 xml 配置文件中连接什么

java - SQL 速度慢,需要帮助。我应该走进内存吗?

java - 如何验证 jtable 中的列只能接受手机号码?

java - 具有层次结构的页面的页面对象的体系结构/设计 : menu-items/menu-sub-items/menu-sub-items-tabs

java - Spring - 将 bean 定义从 XML 更改为注释