Hibernate HQL 返回非对象集合

依赖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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值