Hibernate的查询结果只能是一个类吧
比如你用qurey查询,
结果的List中的元素应该是同一个类型的,
否则你自己也很难控制阿.
如果希望将两个表中相关的数据查询出来,
不妨建个VO,将你需要的属性都包括在VO中,
然后select new VO(a.id, b.name) from A a, B b where *****;

解决方案 »

  1.   

    from A a left outer join a,b
    返回的就是一个List,list中每行都有2个类啊
      

  2.   

    可以用这种写法: public List findPerson(String statusid)
    {
    Session sess = openSession();
    StringBuffer sb = new StringBuffer();

    sb.append(" select new map(to_char(person.personid) as personid,expoPerson.cardid as cardid,person.name as name,sex.sex as sexname," );
    sb.append(" country.countryname as countryname,province.provincename as provincename,team.teamname as teamname,");
    sb.append(" company.companyname as companyname,person.placename as placename,cardType.cardtypename as cardtypename,");
    sb.append(" certType.cncerttypename as certtypename, person.cardnum as certtypenum,file.filename as filename,teamuser.username as teamusername");
    sb.append(" )");

    sb.append(" from TExpoPerson as expoPerson ");
    sb.append(" inner join expoPerson.person as person ");
    sb.append(" inner join person.user as user ");
    sb.append(" inner join user.company as company ");
    sb.append(" inner join person.sex as sex ");
    sb.append(" inner join expoPerson.roleCard as roleCard");
    sb.append(" inner join roleCard.cardType as cardType");
    sb.append(" left join company.team as team");
    sb.append(" left join team.user as teamuser");
    sb.append(" left join person.country as country");
    sb.append(" left join person.province as province");
    sb.append(" left join person.certType as certType");
    sb.append(" left join person.fileSet as file");

    sb.append(" where expoPerson.status.statusid = ?");
    sb.append(" and expoPerson.cardaudittime is not null");
    sb.append(" and expoPerson.carddone is null");
    sb.append(" and expoPerson.carddelivered is null");
    sb.append(" and expoPerson.cardshamdeltime is null");
    sb.append(" and expoPerson.carddeletetime is null");
    sb.append(" and expoPerson.cardmade is null");
    sb.append(" and person.deletetime is null");
    sb.append(" order by cardType.cardtypename asc");
    Query q = sess.createQuery(sb.toString());
    q.setLong(0,new Long(statusid));
    List list = q.list();

    String date = DateUtil.getDateTime("yyyy-MM-dd HH:mm:ss",new Date());
    Map map = null;
    int iLen = list.size();
    if(iLen > 0)
    {
    for(Object o :list)
    {
    map = new HashMap();
    map = (Map)o;
    map.put("expExcelTime",date);
    }
    }

    return list;
        }