Hibernate在单独的列表类中按帐户名称总和获取结果组

时间:2015-09-22 08:34:44

标签: java hibernate

我有一个课程如下

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

是什么

1 个答案:

答案 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();
}

你可以通过迭代循环获得DEBITCREDIT并设置一个条件,无论是正数还是负数,以获得最终结果