Hibernate HQL 返回非对象集合

来源:互联网 发布:head first java百度云 编辑:程序博客网 时间:2024/06/14 21:25
依赖Hibernate框架环境。

实际需求里面可能我们需要通过HQL查询返回中间结果集合,或者多表查询结果,多出现在统计报表之类的需求中。
当然SQL可能是更好的选择...
标签:Hibernate

[1].[代码] 指定查询字段,返回Object[]数组集合结果。 跳至 [1] [2]

?
1
2
3
4
5
6
7
8
9
10
11
12
//Bussiness(业务)下各银行金额汇总
String hql="select bank.name, sum(money) from Business group by bank.id order by bank.no asc";
List<Object[]> results = session.createQuery(hql).list();
if(results!=null&&results.size()>0){
    String bankName = "";//银行名称
    BigDecimal money = "";//金额
    for(Object[] o:results){
        bankName = o[0]!=null?(String) o[0]:"";
        money = o[1]!=null?(BigDecimal) o[1]).doubleValue():BigDecimal.ZERO;
        System.out.println(bankName+"|"+money)
    }
}

[2].[代码] 指定查询结果,返回Map对象集合 跳至 [1] [2]

?
1
2
3
4
5
6
7
8
9
10
11
12
//Contract(合同)下各个月份的签约合同金额汇总
hql = "select new Map( date_format(contract.signTime,'%Y-%m') as name, sum(contract.money) as value) from Contract contract group by date_format(contract.signTime,'%Y-%m') order by contract.createDate asc ";
List<Map<String, Object>> results = session.createQuery(hql).list();
if(results!=null&&results.size()>0){
    String month = "";//年-月
    BigDecimal money = "";//金额
    for(Map<String, Object> map:results){
        month = (String) map.get("name");
        money = (BigDecimal) map.get("value");
        System.out.println(month+"|"+money.toString());
    }
}
0 0
原创粉丝点击