我有5个表book:图书、 user:用户、 orders:订单、 orderitem:订单项、 catalog:图书分类
表之间的关系:
       user 1------N orders
       orders 1------N orderitem
       orderitem N-----1 book
       book 1-----N catalog
使用Hibernate 通过用户ID来查询orders、orderitem、book三个表中字段
HQL="from Book b,Orders o,Orderitem i where o.orderid=i.orders.orderid and i.book.bookid=b.bookid and o.user.userid="+userid;执行完成之后得到的List。问题来了:      因为使用了Spring,所以在查询得到的结果Spring会自动反射到Orders、Orderitem、Book三个对象!而Hibernate执行结果是一个List,我要怎样才能得到这三个对象数组???---通过自己debug,发现得到的List中确实能够看到生成了对象数组!!分就给50,谁要是能够帮小弟解决,50分都给他了.......

解决方案 »

  1.   

    hibernate是or工具,请先满足or设计,否则hibernate就无用武之地了表关系已经很明确了,那么对象也需要这么设计,之后用fetch join来关联查询即可顺便说一下,自动反射到Orders、Orderitem、Book,这些都是hibernate完成的,和spring无任何关系
      

  2.   

    循环listObject[] object = list.get(i);
    object[0] = ...
    object[1] = ...
    object[2] = ...
      

  3.   


    list.get(i) 得到的不是一个object吗 能够用数组?
      

  4.   

    你的业务逻辑是要得到某用户的所有订单,每个订单的订单项,每个项里的书,是吧
    可以调用User的findById方法,把这个User查到,然后用关联映射一级一级的拿Book,Orders,Orderitem
      

  5.   

    我Hibernate和Spring都是初学 您说的很中肯 可是我不大明白.. 要说自动反射式Hibernate的功劳,那Spring有什么用您能把fetch join 这个具体说下吗
      

  6.   

    这个我考虑过了 要是那样的话 需要创建多个方法 程序显得很累赘.. 我想是不是应该能够利用Hibernate生成的对象组 来进行操作
      

  7.   

    还有,你这样查,出来的List里面每一个元素都是个Object数组,长度是3,数组里第一项是Book第二项是Orders第三项是Orderitem。
    List的长度是该用户所有订单的所有订单项之和。
    给你这个思路,你一定要用现在的差法,自己慢慢拆去吧。
      

  8.   

    给你写个示意的代码吧
    首先要给3个实体类实现Comparable接口List<Book> bookList = new ArrayList<Book>();
    List<Orders> ordersList = new ArrayList<Orders>();
    List<Orderitem> orderItemList = new ArrayList<Orderitem>();
    for (int i = 0; i < list.size(); i++) {
    Object[] array = (Object[]) list.get(i);
    Book book = (Book) array[0];
    Orders orders = (Orders) array[1];
    Orderitem orderItem = (Orderitem) array[2];
    if (!bookList.contains(book)) {
    bookList.add(book);
    }
    if (!ordersList.contains(orders)) {
    ordersList.add(orders);
    }
    if (!orderItemList.contains(orderItem)) {
    orderItemList.add(orderItem);
    }
    }
    Book[] bookArray = new Book[bookList.size()];
    bookArray = bookList.toArray(bookArray);
    Orders[] ordersArray = new Orders[ordersList.size()];
    ordersArray = ordersList.toArray(ordersArray);
    Orderitem[] orderItemArray = new Orderitem[orderItemList.size()];
    orderItemArray = orderItemList.toArray(orderItemArray);
      

  9.   

    Object[] row = (Object[])list.get(i); 
    Orders order = (Order)row[0];
    OrderItem item = (OrderItem)row[1];
    Book book = (Book)row[2];