我用的是EJB、JPA框架,类似如下的代码,查询返回的是List<Object>数据,我怎么取出里面的name数据?
Query q = entityManager.createQuery("SELECT a.name b.name FROM a, b where a.id = b.id");
List<Object> results = (List<Object>) q.getResultList();
不胜感激!

解决方案 »

  1.   

    SELECT a.name b.name FROM a, b where a.id = b.id 最好改一下。
    as XX 加上
    既然是List 你还取不到值吗?
      

  2.   

    仔细看看我写的内容这个是你多表查询 返回的结果是一个list 
    这里要注意 list里面是数组 使用的时候要 使用list.get(0)[0]引用里面的对象
    比如你sql关联查询一个 对象和一个字典对象
    这样 对象被取出来,字典对象也被取出来 这两个和成一个数组对象被放到list的一个item里面
    页面使用 无论那种框架 
    使用标签循环 
     <c:forEach var="asset" items="${requestScope.assetLandList}">
    asset[0].landName
    或者才Service层将list重新拆装 
      

  3.   

    SELECT a.name as aname, b.name  as bname FROM a, b where a.id = b.id 然后你取得 时候 直接就是bname aname 了
      

  4.   

    非常感谢几位的回答,但是还是没看懂
    1、多表查询 返回的结果是一个list,使用list.get(0)[0]会导致编译不过,应该怎么转换? 
    2、SELECT a.name as aname, b.name as bname FROM a, b where a.id = b.id,据我的了解,aname和bname是作为列的别名,不能取得列数据吧?如果可以,aname和bname要定义成什么类型的变量?
      

  5.   

    你debug一下 看看list里面到底是什么就好了  看list里面的东西的里面是什么 
    看完了 在看我们说的
      

  6.   

    把List<Object> results = (List<Object>) q.getResultList();语句改为:
    List results = q.getResultList();则其lst值类型为Vector<E>,其elementData属性值为Object[],问题在于怎么取出Object里面的整形、字符串等数据
      

  7.   

    List<Object> lst = (List<Object>)q.getResultList();
    Object[] masc = (Object[])lst.get(0);
    现在masc[0]为Object对象,他现在是个整形数据,我怎么取出这个值,用下面的语句会编译不过
    int maid = (int)masc[0];
    多谢了!
      

  8.   

    把int maid = (int)masc[0];改为int maid = (Integer)masc[0];就可以了,不知道还有没有其他更方便地方式来获取查询出来的数据方法?