我需要实现对于具有一对多关系的对象列表一致且高效的分页。列表中的项目以组显示,组成员的数量因组而异。某些群组可能不包含任何成员。分页应由小组成员的数量决定。
例如,考虑家庭照片目录。以下是规则:
请分享开发此算法的任何提示。我非常感谢任何特定于平台的提示。该应用程序使用Hibernate 3.3.2和Spring 2.5.6。该数据库是Oracle 10g。
答案 0 :(得分:1)
在Hibernate中,您可以限制查询返回的行数,即。即使用
设置页面大小Query.setMaxResults(nbr);
如果要加载不同页面然后加载第一页,则使用
设置页面的第一行query.setFirstResult(rowNr);
两者都只对主表(familiy)有效,但它不限制子表(照片)中的行数。然后你有非常特殊的要求(如果第一个家庭有三张照片,那么第二个家庭只允许在该页面上有七张照片,而不是像往常一样)。为此,我建议忘记家庭中的Hibernate一对多关系,并手动完成。这使您可以完全控制加载照片并限制其数量。