用Hibernate,在数据库表设计的时候不设计表之间外键关系,所以在hbm文件里也不存在one-to-many之类的配置信息,现在要进行多表查询,比如student表和course表,进行查询:select student.sno,course.coursename from sutdent,course where student.courseid=course.id;使用List接受返回类型。我现在需要开发webservice,故在List后要加泛型(List<T>),否则无法发布。请问这个泛型应该是什么?是不是需要一个student类和course类的中间类?这个中间类是否可以动态生成?(需要查的时候动态创建,查询完毕后动态销毁)。

解决方案 »

  1.   

    这个不知道这样行不行啊
    猜的 
    List <List>或者List <Object>
      

  2.   

    List<List>没试过,估计不行。List<Object>这个倒是可以发布成功,只是在发布成功webservice之后,查找到得数据无法取出来。
      

  3.   

    我记得查询出来的好象是个数组.String类型的
      

  4.   

    看你用什么直接用SQL返回的是Object数组里面是个列的值
    如果用HQL也是返回Object数组但里边是类
      

  5.   

    4楼,如果用sql的话,就是使用Native SQL查询了,想要查询部分字段,只能写.addScalar(...),这样写的话是不是就写死了?用HQL的话,那Object数组里边的那个类,究竟是哪一个?比如我举得例子,student和course。因为要查的是两个类中的信息,所以返回的不知道应该是哪个类。
      

  6.   

    你的student.sno,course.coursename 应该是一个integer,一个string类型吧,可以用instanceof来判断,你查出来可以用
    List ls = session.createQuery("xxx");
    for(Object obj : ls)
    object[] objects = (object[])ls.next();
    objects[0]//就是student.sno
    objects[1]//就是course.coursename 
    要是不行,那就写个中间类把student,course的属性集合在一起。