我想返回 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/