我用hql=......new map(xx xx1,xx2).......怎么能遍历这个map的时候,顺序就是xx1,xx2呢?就好象LinkedHashMap一样因为有些地方用到map的key,有些地方需要用顺序的,所以不能用hql返回object[]!
不知道我说清楚了吗?
55thx

解决方案 »

  1.   

    =......new map(xx xx1,xx2)....... ?????????????
      

  2.   

    比如hql = select new map(field1 as Field1, field2 as Field2) from tableClassA 
    这样啊.会返回1个list,然后这个list里面都是map,然后这个map我遍历的时候,我希望按照我select的顺序遍历出来.就好象遍历LinkedHashMap一样 .按put进去的顺序遍历.由于有些地方用到map的key,有些地方需要用顺序的,所以不能用hql返回object[]! 
    不知道我这次说清楚了吗? 
    55thx
      

  3.   


    String hql = "select new map(field1 as Field1, field2 as Field2) from tableClassA";
    Query query = session.createQuery(hql);
    List<Map> list = query.list(); 
    for(Map po : list){
        String field1 = (String)po.get("0");
        String field2 = (String)po.get("1");
    }
      

  4.   


    晕倒啊!!!!!!!!!!!!!!!!!!!!!可能我没说清楚。
    比如hql = select new map(field1 as Field1, field2 as Field2) from tableClassA 
    这样啊.会返回1个list,然后这个list里面都是map,然后这个map我遍历的时候,我希望按照我select的顺序遍历出来.就好象遍历LinkedHashMap一样 .按put进去的顺序遍历. 即返回的map遍历顺序为select 字段的顺序
      

  5.   


    不行啊已经用了as不能在(String)po.get("0");这样写了.用as以后key就成了field1 和field2了啊
      

  6.   

    额~我以为as Field1只是个别名而已,看来是我理解错误
    你试试把map的值放进迭代器里看行不行Iterator iter = po.values().iterator();
    while(iter.hasNext()){
        //看看取出来的值是不是有序的
        String value = (String)iter.next();
    }
      

  7.   

    如果使用到复杂的sql语句。。还是建议使用回jdbc比较灵活。。!