// 用于hibernate 2.x
protected String getCountSql(String originalHql, net.sf.hibernate.SessionFactorysessionFactory) throws Exception {
QueryTranslator translator = new QueryTranslator(originalHql);
translator.compile((net.sf.hibernate.engine.SessionFactoryImplementor)sessionFactory, Collections.EMPTY_MAP, false);
return "select count(*) from (" + translator.getSQLString() + ") tmp_count_t";
}
// 用于hibernate 3.x
protected String getCountSql(String originalHql, org.hibernate.SessionFactory sessionFactory) throws Exception {
QueryTranslatorImpl queryTranslator = new QueryTranslatorImpl(originalHql, originalHql,
Collections.EMPTY_MAP, (org.hibernate.engine.SessionFactoryImplementor)sessionFactory);
queryTranslator.compile(Collections.EMPTY_MAP, false);
return "select count(*) from (" + queryTranslator.getSQLString() + ") tmp_count_t";
}
本文提供了两种不同的方法来实现Hibernate框架中的计数查询功能,一种适用于Hibernate 2.x版本,另一种适用于Hibernate 3.x版本。通过使用QueryTranslator或QueryTranslatorImpl类,可以将原始的HQL查询转换为带有计数功能的SQL查询。
1万+

被折叠的 条评论
为什么被折叠?



