发票
iddescriptionrateamount
1发票 A 3.0 10.0
2发票 B 4.0 20.0
3发票 C 5.0 30.0
DetachedCriteria criteria= DetachedCriteria.forClass(Invoice.class)
ProjectionList projList = new ProjectionList();
projList.add(...);
criteria.setProjection(projList);
List list = myDAO.findByCriteria(criteria);
//260
使用投影列表,是否可以计算(金额*比率)并返回所有记录的总和?
更新 1:
double dblAmount = 0.0;
for(Invoice invoice : list){
dblAmount = dblAmount + (invoice.getRate() * invoice.getAmount());
}
使用 Hibernate 4,听说在不指定连接的情况下,使用这种方式 (invoice.getSomething()) 会影响性能吗?
最佳答案
您可以创建一个 @Formula
派生属性,然后在其上创建一个投影:
派生属性:
@Entity
@Table(name="INVOICE")
public class Invoice {
private double rate;
private double amount;
@Formula("rate * amount")
private double computed;
// ...
}
投影:
Projections.sum("computed")
关于java - Hibernate criteria + Projection List中的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23012961/