我有一个课程如下
class Account{
int id;
String name;
ACType actype;
double amount;
}
enum ACType{
CREDIT,DEBIT
}
现在假设我有一个表格如下
1 name1 CREDIT 10
2 name1 CREDIT 20
3 name1 DEBIT 10
4 name2 CREDIT 10
5 name2 DEBIT 10
6 name2 DEBIT 30
现在我想要每个名字的总和
name1 CREDIT -20
name2 DEBIT 30
我没有任何匹配此签名的课程
如何在列表中获取此结果并访问它们?
我正在使用Hibernate Criteria
,上面的类是JPA
注释的
那么Criteria
答案 0 :(得分:0)
创建课程
class Test{
String name;
double amount;
// getter
// setter
}
按以下方式编写查询
@Transactional
public List<Test> getAccountDetailsBalanceSheet(){
Query query = sessionFactory.getCurrentSession().
createSQLQuery("SELECT name, SUM( CASE WHEN actype = DEBIT THEN amount ELSE amount * -1 END ) AS amount FROM Account GROUP BY name")
.setResultTransformer(Transformers.aliasToBean(Test.class));
return (List<Test>) query.list();
}
你可以通过迭代循环获得DEBIT
或CREDIT
并设置一个条件,无论是正数还是负数,以获得最终结果