Cardinfo.java [POJO]private Long cardid; private Userinfo userinfo; private Cardownerinfo cardownerinfo; private String cardname; private String phonenum; private String cardstate; private Date regdate; private Long addons; private String otherinfo;
hql:

sb
.append("select new com.telezone.hqllist.CardinfoList( cinfo.cardid  ,cinfo.cardname  , oinfo.ownername   ,uinfo.username , cinfo.phonenum,cinfo.cardstate,cinfo.regdate,cinfo.otherinfo ) from Cardinfo as cinfo left  join cinfo.cardownerinfo as oinfo left join cinfo.userinfo as uinfo");
queryObject = session.createQuery(sb.toString());
其中com.telezone.hqllist下放的都是多表查询时,需要返回的字段,一个多表查询对应一个类
这样的类应该是属于JavaBean而不是POJO对象吧?请问大家是如何处理这样的查询的?
应该这样返回的List,在Struts里面可以直接使用,不需要转换,就可以传到页面上了

解决方案 »

  1.   

    JavaBean和POJO是等同的吧? 似乎还不是很清楚楼主想表达什么意思,
      

  2.   

    1、 对各个字段分别转化成对应类型,如下:Query q = session.createQuery(" select members, classInfo.className " +           " from Members members, ClassInfo classInfo " +       
        " where members.level = classInfo.classCode ");   
           List result = q.list();     
      Iterator it = result.iterator();  
         while (it.hasNext()) {       
       Object[] tuple = (Object[]) it.next();   
           Members members = (Members) tuple[ 0 ];    
          String className = (String) tuple[ 1 ];       }  
    这时,List的每一属性都是一个对象,通过 Members members = (Members) tuple[ 0 ]转换类型。2、构造自己的复合类型,如下:
    Query q = session.createQuery(" select new NewMembers(members, classInfo.className) " +      
         " from Members members, ClassInfo classInfo " +   
            " where members.level = classInfo.classCode "); 这是需要相应的NewMembers类和构造方法。