应该为使用Hibernate的主键Long还是Integer选择哪种数据类型?

时间:2013-03-28 17:27:17

标签: java hibernate pagination

目前,我正在使用Spring 3.2.0,Hibernate 4.2.0.CR1和Oracle 10g的Web应用程序。

Oracle表中的主键是序列生成的,它们都已在Hibernate实体中以Long类型映射。在实践中,很难有一个没有分页的系统。

我通常使用以下方法从数据库表中的行列表中检索子列表。

sessionFactory.getCurrentSession()
              .createQuery("from Entity order by entityId desc")
              .setFirstResult(currentPage)
              .setMaxResults(pageSize)
              .list();

setFirstResult()setMaxResults()方法仅接受int类型的参数。当然,int类型对于setMaxResults()方法来说已经绰绰有余了,但是如果有人在表中有很多行并且他/她需要检索一个子列表,比如50行那么来自Integer.MAX_VALUE

假设给定表中有多个2,147,483,647行。当然,我可以理解给定值2,147,483,647是一个很大的数字,但是如果只使用Long方法,则会出现一个问题,即为什么人们应该使用setFirstResult()类型作为主键接受int的类型?我没有看到此方法的任何重载版本,即使使用可以接受int以外的条件API,实际上很少看到没有分页的系统。

0 个答案:

没有答案