读书人

hibernate中关于类继承后导致分页

发布时间: 2012-01-10 21:26:51 作者: rapoo

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);


前取到结果了么???

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

读书人网 >J2EE开发

热点推荐