此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【myepoch】截止到2008-06-28 21:46:05的历史汇总数据(不包括此帖):
发帖数:82                 发帖分:1305               
结贴数:76                 结贴分:1285               
未结数:6                  未结分:20                 
结贴率:92.68 %            结分率:98.47 %            
值得尊敬

解决方案 »

  1.   

    (pageNo - 1) * pageSize  debug或者System.out.println跟踪一下, 看看pageNo真是1吗如果上面真是1,那你加个order by 试试
      

  2.   

    把 show_sql 加上,看看实际SQL代码是什么
      

  3.   

    show_sql没用吧,预编译的看不出参数,怀疑是传的参数错误,尤其是pageSize这个东东,怀疑传进去的为0
      

  4.   

    String sql = "select o,a from PubArticleOperation o,CmsArticle a where o.flag='1' " +
    "and a.articleId=o.docid and o.rootid in ('1')";      q.setFirstResult(0);
          q.setMaxResults(100);结果是零。如果注释
          //q.setFirstResult(0);
          //q.setMaxResults(100);
    结果集合就>0
      

  5.   

    我发现一个问题就是CmsArticleNew是继承CmsArticle 的,只要CmsArticleNew继承CmsArticle 就出现结果集合为零,否则如果不继承结果集合就对。
      

  6.   

    楼主想分页么
    "pageNo - 1"
      

  7.   

    如果按你7楼所说,那就不是分页的问题了,是hibernate影射有问题,子类应该有自己的hibernate影射。
      

  8.   

    我的子类CmsArticleNew确实有自己的映射啊
      

  9.   

    CmsArticle.hbm.xml 是CmsArticle.java的映射文件
    <class 
        name="pojo.CmsArticle" 
        table="tbnc_CMSarticle"
        dynamic-update="true"
        
    >
    ----------------------------------------------CmsArticleNew.hbm.xml 是CmsArticleNew.java的映射文件
    <class 
        name="pojo.CmsArticleNew" 
        table="tbnc_CMSarticle"
        dynamic-update="true"
        
    >
    ------------------------------------------hibenate.hbm.xml
    <mapping resource="pojo/CmsArticle.hbm.xml" />
    <mapping resource="pojo/CmsArticleNew.hbm.xml" />
    ------------------------------------------
     CmsArticleNew继承CmsArticle类,
    注意:CmsArticle类仅仅多了一个clob类型的字段而已,其他字段属性与CmsArticleNew.java一致。
    ------------------------------------------String quert= "select o,a from PubArticleOperation o,CmsArticle a where o.flag='1' " + 
    "and a.articleId=o.docid and o.rootid in ('1')"; pageNo=1 
    pageSize=100 
    public static List find(String query, int pageNo, int pageSize) throws DAOException { 
        Session session = SessionManager.getSession(); 
        List list; 
        try { 
          Query q = session.createQuery(query); 
          q.setFirstResult( (pageNo - 1) * pageSize); ////////只有这两行注释了,才有结果集>0
          q.setMaxResults(pageSize); ///////////////////只有这两行注释了,才有结果集>0
          list = q.list(); 
        }catch (HibernateException he) { 
          if (log.isErrorEnabled()) { 
            log.error("Error:find method error!", he); 
          } 
          throw new DAOException(he); 
        }finally { 
          if (session != null && session.isOpen()) { 
            SessionManager.closeSession(session); 
          } 
        } 
        return list; 
      } 
    得出的结果集合是零,而实际上数据库符合条件的记录是110条,
    如果将其:
         // q.setFirstResult( (pageNo - 1) * pageSize); ////////只有这两行注释了,才有结果集>0
         // q.setMaxResults(pageSize); ///////////////////只有这两行注释了,才有结果集>0
    注释了,那么得出的结果集合>0,但不是110条,而是220条(即双倍)。
    而问题的根源我发现了,但不知道如何解决。
    问题的关键是CmsArticleNew.JAVA继承了CmsArticle.java如果不是继承,那么得出的结果是正确的,即为110条。