使用JPA(Hibernate)查找包含给定记录的页面

使用JPA(Hibernate)查找包含给定记录的页面,第1张

使用JPA(Hibernate)查找包含给定记录的页面

确保我理解正确:您正在显示,

Record
并且想要显示所有记录的分页列表,从而预选了包含您的项目的页面?

首先,您必须知道关系数据库不提供数据库中记录的任何隐式排序。尽管它们似乎是从头到尾添加的,但它并不便携且可靠。

因此,您的分页列表/网格必须按某些列进行显式排序。为简单起见,假设您的网格按排序

id
。您知道当前显示的记录的ID(例如:)
X
。首先,您需要根据此排序顺序找出记录在表中的哪个位置:

SELECt COUNT(r)FROM Record rWHERe r.id < :X

该查询将返回记录 之前 的记录数。现在很简单:

int page = count / pageSize

page
基于0。

不幸的是,如果您的排序列不是唯一的,则可能无法在所有情况下都起作用。但是,如果该列不是唯一的,则排序本身就不稳定(具有相同值的记录可能会以随机顺序出现),因此请考虑按额外的唯一列进行排序:

...ORDER BY r.sex, r.id

在这种情况下,记录首先按

sex
(很多重复项)和ID 排序。在当前记录之前对记录进行计数的解决方案仍然有效。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4937358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存