首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

hibernate中,关于类继承后,导致分页取出结果集数量异常的严重有关问题,请各位帮忙

2012-01-10 
hibernate中,关于类继承后,导致分页取出结果集数量错误的严重问题,请各位帮忙。CmsArticle.hbm.xml 是CmsAr

hibernate中,关于类继承后,导致分页取出结果集数量错误的严重问题,请各位帮忙。
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条。

[解决办法]

[解决办法]
把你的影射文件完整的贴出来看看吧。
你说:
CmsArticleNew继承CmsArticle类,
注意:CmsArticle类仅仅多了一个clob类型的字段而已,其他字段属性与CmsArticleNew.java一致。

也就是说,夫类比子类多一个clob类型的字段?没有说反吗?

[解决办法]
q.setFirstResult( (pageNo - 1) * pageSize);


前取到结果了么???

[解决办法]
父类比子类多一个属性?

热点排行