【发布时间】:2023-11-10 15:35:02
【问题描述】:
我有一个 JPQL 查询,它从数据库中检索已排序的实体列表。我有这些实体之一的 ID。如何在我的选择中获取具有已知 id 的记录的上一条和下一条记录?
select distinct n from News n
inner join n.author a
inner join n.tags t
where a.id = :authorId and t.id in :tagsId
order by size(n.comments) desc
News 有一个作者,许多标签和 cmets。我选择具有给定作者和标签的新闻,并根据他们的 cmets 数对它们进行排序。
在使用 JDBC 时,我使用 rownum 解决了此类问题。
我可以使用 JPA 在结果中获取记录的位置(rownum)吗? 如果我知道记录的位置,我可以将第一个结果定义为该位置 - 1,并将给定查询的最大结果定义为 3。这就是我获取上一个、当前和下一个新闻的方式。
除了遍历新闻列表之外,还有其他解决方案吗?
【问题讨论】:
-
我认为你必须遍历列表并找出答案。
-
@manoj 如果数据库中有数百万条记录怎么办?我所需要的只是得到其中两个。
-
@X.L.Ant 我提供了有问题的查询。
-
我不明白反对意见 - 我认为这是一个合理的问题......