目前,我正在使用 Spring 3.2.0、Hibernate 4.2.0.CR1 和 Oracle 10g 使用 Web 应用程序。
Oracle 表中的主键是序列生成的,并且它们都已映射Long
到 Hibernate 实体中的类型。在实践中,几乎不可能有一个没有分页的系统。
我通常使用以下方法从数据库表中的行列表中检索子列表。
sessionFactory.getCurrentSession()
.createQuery("from Entity order by entityId desc")
.setFirstResult(currentPage)
.setMaxResults(pageSize)
.list();
和方法只接受一个类型作为它们setFirstResult()
的参数。当然,该类型对于该方法来说已经绰绰有余了,但是如果某人在表中有很多行并且他/她需要检索一个子列表,比如说从 Beyond 开始的 50 行,该怎么办?setMaxResults()
int
int
setMaxResults()
Integer.MAX_VALUE
假设给定表中有多个2,147,483,647
行。当然,我可以理解给定的值2,147,483,647
是一个很大的数字,但是Long
如果setFirstResult()
方法只接受int
? 即使使用可以接受以外的标准 API,我也看不到此方法的任何重载版本int
,同样在现实中很少看到没有分页的系统。