Ily*_*ich 5 java database jpa jpql
我有一个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
Run Code Online (Sandbox Code Playgroud)
新闻有一位作者,许多标签和评论.我用给定的作者和标签选择新闻,并根据评论的次数对它们进行排序.
使用JDBC时,我已经解决了这些问题rownum.
我可以使用JPA获得结果中记录的位置(rownum)吗?如果我知道记录的位置,我可以将第一个结果定义到该位置 - 1,并且对于给定查询,最大结果为3.这就是我如何得到以前,当前和下一个新闻.
除了遍历新闻列表之外,还有其他解决方案吗?
小智 1
我很确定可以做更好的事情,但这是我面临类似问题时的解决方法:
SELECT l.id FROM Lines l WHERE l.date < :date ORDER BY l.date DESC
Run Code Online (Sandbox Code Playgroud)
我想要的是检索前一个日期的id(“前一个”的意思是适应你的情况)。详细步骤如下:
这个想法是将结果分为两个主要列表,一个列表中的所有结果“高于”您想要的结果,另一个列表中的所有结果“低于”。然后你对它们进行排序并得到第一个结果。
我认为它可以改进为单个查询而不是两个,但我不确定如何改进。
希望它可以帮助您或其他有类似问题的人。