SSH的框架,因为涉及到一个比较复杂的查询方法,所以就用直接写的sql语句,
用Query q = getSession().createSQLQuery(sql);执行
结果保存在一个list中:List = q.list();
查询结果list的size是对的,我想取出list中的每一个值,
于是,我for(int i=0; i<l.size; i++)
可是System.out.println(l.get(i));全是[Ljava.lang.Object;@13a46b6这样的。
因为取出来的数据没有相对应的实体类,所以我该如何做?
查询结果有2列,一列是id,一列是名称
我想把它们放在Map里,用l.get(i)作为map的key值,l.get(i+1)作为map的value值,
可是这样put进去的也是Ljava.lang.Object;@13a46b6这样的吧?在线等~~~

解决方案 »

  1.   

    l.get(i).toString();结果是Ljava.lang.Object;@13a46b6(String)l.get(i);报错String.valueOf(l.get(i));结果也是Ljava.lang.Object;@13a46b6
      

  2.   

    用Iterator进行容器的遍历
    Iterator it = list.iterator();
    while(it.hasNext()){
        System.out.println(it.next());
    }
      

  3.   

    因为取出来的数据没有相对应的实体类,所以我该如何做?
    没有对应的实体类,那么取出来的肯定是object了。l.get(i) get到的也肯定是object了。
    既然用了hibernate,就建议写一个实体类,然后你想取字段放到map里不就easy了吗。
      

  4.   

    得到的是对象数组集合, 每个数组表示一个row, 用下标得到数组中的每个元素, 然后强转成相应的类型
      

  5.   

    Map map = new HashMap();
    for(int i=0;i<l.size;i++){
        Object[] object = l.get(i);
        if(i%2==0){
          for(int j=0;j<object.length;j++){
            map.put(object[i],object[i+1]);
          }
        }
    }当心数组越界哦。
      

  6.   

    你用的是ssh开发
    如果你是要将list在页面显示的话,不用再用map装了。 
    直接用你本来的把查询的list在页面使用<s:iterator id="f" value="%{list}" >
    就行了。 
      

  7.   

    List l = query.list();
    for(int i=0;i< l.size();i++){
    Object[] object = (Object[]) l.get(i);
    for(int j=0;j<object.length;j++){
    if(j==0){
    int n = (Integer)object[j];
    String s = (String)object[j+1];
    System.out.println("n="+ n+ "s="+s);
                                                    你自己在装进map里面吧。 
    }
    }
    }
      

  8.   

    用Iterator进行容器的遍历
    Iterator it = list.iterator();
    while(it.hasNext()){
      System.out.println(it.next());
    }
    然后进行相应的类型转换
      

  9.   

    查询的内容,必须是两个,前面是int 后面是String。 就像你说的一样。
      

  10.   

    在使用ssh的时候  返回的结果集如果是多个表中的字段,在相应的list里面的对象也是用数组对象去存储的,
    比如list.get(0)[0]是第一个对象
    list.get(0)[1]是第二个对象