我数据库中有张Accounts表,表情况如下:CREATE TABLE  `accounts` (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  `userid` bigint(20) unsigned NOT NULL default '0',
  `price` float NOT NULL default '0',
  `place` varchar(60) NOT NULL default '',
  `comment` text,
  `time` datetime NOT NULL default '0000-00-00 00:00:00',
  `accountid` bigint(20) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=135 DEFAULT CHARSET=utf8;直接将表中一条记录取出,转换成Accounts实体对象没有问题,userid对应唯一的会员编号,会员信息保存在另一张userinfo表中
可现在我只需啊被accountid取出userid与comment,并根据userid去userinfo找到对应的会员名称,其方法如下:  public List getGoodsComment(Long gid) {
 
  List list=null;
  Transaction tx = null;
Session session = this.getSession();


try {
tx = session.beginTransaction();
Query q = session.createQuery("select userid,note from Accounts where accountid =:gid);
                                q.setLong("gid", gid);
list=q.list();

} catch (Exception e) {
e.printStackTrace();
tx.rollback();
} finally {
session.close();
}
return list; }
这个时候返回一个list,因为这个list中又包含了一个list
我开始以为可以直接用 List a = list.get[i]将其中的list取出,提示错误无法将object转换为list,强制加上(List)也不行。
因为以前都是直接 List a = (accounts)list.get[i]
可由于这次只取出了部分数据,所以也无法转换。请问如何将这个应该如何处理呢?重新写一个POJO类?

解决方案 »

  1.   

    那是得到了一个Object数组,循环这个object数组就行了!你用Object数组装!!
      

  2.   


    只有from ......这样的语句才会是实体类,其他的就是一个object数组了
      

  3.   

    得到Object数组后还是不知道如何处理啊~
      

  4.   

    假如要去userid ,note 
    object[0][0],object[0][1]
    object[1][0],object[1][1]
    object[2][0],object[2][1]...
      

  5.   

    还有一个动态实例查询的语法
    select new User(user.username,group) from User user ,Group group where ....  
      

  6.   

    可以用楼上的这种HQL来过滤不需要的字段,但这样需要在实体类中有相应的构造函数
      

  7.   


    谢谢大家,已经用object数组解决问题了,不过这里的from User user,Group group是什么意思呢?
      

  8.   

    select a.* ,b.* from a,b where a.id = b.aid
      

  9.   

    可以用HQL 语句,List 套map 就能取出你想要的值了