比喻说课程表和问题表
一个课程下面可以有很多问题
课程里面有个SET
现在我想做的效果是
当我查询出一门课程之后 因为有了SET 
所以该课程下的所有题目也可以得到
现在我不想把所有题目得到
我只想查询出前10条数据
这样改怎样搞啊
不要通过查询出所有问题 然后取前10条
我想得到一条课程的数据后 里面的题目SET只有10条数据
是通过直接查询得到的
有没有办法

解决方案 »

  1.   


    Query query = session.createQuery("from t_wenti where course_id =''");
    query.setFirstResult(1);
    query.setMaxResult(10);
    List result=query.list();
      

  2.   


    query.setFirstResult(1);改为query.setFirstResult(0);
    是从0开始的
      

  3.   

    好像楼主的意思是拿到一个课程对象时,里面的Set自动加载10个题目。也许可以通过hibernate映射文件来实现,在课程类的hbm.xml中,针对
    题目属性(Set),指定 batch-size="10", 如有必要可以指定 order-by="xxx asc"
    再指定 lazy="false"应该就可以满足楼主的要求了。
      

  4.   

    你理解我意思了
    我还没试 不晓得你说的是不是正确的
    我等下去试的看下 
    不过batch-size貌似是告诉HIBERNATE一次抓取的数量 和 总数量应该没有关系吧
      

  5.   

    你要实现以上需求,你的用它的过滤方法了。createfile();可以查查,不怎么用该方法。
      

  6.   

    Course(课程),Issue(问题)假如有这两个实体。一对多,关系双向的。
    课程中有个总是对象的关联set名称为issues,总是对象中有个课程对象关联名称为course。直接构造一个HQL来查询。Session session = getCurrentSession();
    Query query = session.createQuery("select i from Issue i where i.course=:course");
    query.setParameter("course",course);
    query.setFirstResult(5);
    query.setMaxResults(10);
    List<Issue> resutls = query.list();以上代码就是指定课程下的第5到第10个问题Issue对象的实体。
      

  7.   

    batch-size=10 lazy="false" 
    这样设置,可以保证在你取出来的时候,在你取课程的时候,顺便再set中放前10个问题的对象的实体,这个查询在你load课程这个实体的时候就完成啦。
    可以试试
      

  8.   

    etnet 大侠弄反了我的意思啊
    我要在 查询课程的时候 同时把题目也查出来并不是 在题目哪边写HQL啊