Hibernate HQL 中的select new map 使用实例 嵌套Map

1.关于select new map 的用法:

        String hql=“select new map(s.name as name)  from Student s”;
        List ls=session.createQuery(hql).list();
        for(Map m:ls){
                System.out.pringln(m.get("name"));
        } 

      返回的List 存放的是entry实体,用Map遍历便可得到里面的keySet和Values;

2.应用实例

public Map getEvaluatesOfItems() {	
		String[] a =["zuzhiGongzuo","neirongZhenduixing","peixunQifen","shoukeXiaoguo","ziliaoZhiliang","renzhenChengdu","zhijiaoShuiping","biaodaNengli","jifaCanyuNengli","lianxiShijiNengli","fanyingNengli"];		
		Map[] map =new HashMap[11];
		Map mm = new HashMap();
		for(int i=0 ; i < a.length ; i++){
                    String hql = "select new map(item.${a[i]} as z,count(item.${a[i]}) as zs) from hr.training.ApplyTrainingItem item where applyTraining.id=? and item.${a[i]} is not null and item.peixunXueshi is not null group by item.${a[i]}";
		    List ls = ApplyTrainingItem.executeQuery(hql,[this.id]);
		    map[i]=new HashMap();
		    for(Map m:ls){
			map[i].put(m.get("z"),m.get("zs"));
		    }
		  mm.put(a[i],map[i]);
		}
		return mm;
	}
  3.    嵌套Map :

  •       首先要将每句HQL执行后List里面返回的Map放在一起,作为一个Map,(业务需求),取的是一个下拉列表的固定值,取出这些值和对应的个数,a数组中的这些都是下拉 列表获取的值存到数据库中的如下代码:
    zuzhiGongzuo(nullable:true, inList:["好","较好","一般","差","较差"])
    		neirongZhenduixing(nullable:true, inList:["强","较强","一般","差","较差"])
    		peixunQifen(nullable:true, inList:["好","较好","一般","差","较差"])

    ,所以要用到group by column分组函数,即取到的是不同的评价和对应的个数
  •       然后将Map数组依次放入最终返回的Map mm;这两步按照动态传参取出对应数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值