Java 高效的条件查询,仅选择查询的第一个和最后一个结果?

Java 高效的条件查询,仅选择查询的第一个和最后一个结果?,java,hibernate,hibernate-criteria,Java,Hibernate,Hibernate Criteria,我有一个关于order by的大型数据集的查询。我只对第一排和最后一排感兴趣。很容易得到第一个结果(使用Criteria.setMaxResult()),我可以通过颠倒顺序得到最后一个结果 但是,要获得这两个查询,似乎需要两个查询,而这两个查询对于数据库来说可能不是很有效。由于使用SQL很容易实现这一点,我想知道如何制定一个高级条件查询,以便一次性获得这两个条件 请不要建议检索所有数据并获取列表的第一个和最后一个元素,因为数据集非常大,从数据库中读取所有数据需要几分钟 我希望此查询可以独立于数据

我有一个关于order by的大型数据集的查询。我只对第一排和最后一排感兴趣。很容易得到第一个结果(使用
Criteria.setMaxResult()
),我可以通过颠倒顺序得到最后一个结果

但是,要获得这两个查询,似乎需要两个查询,而这两个查询对于数据库来说可能不是很有效。由于使用SQL很容易实现这一点,我想知道如何制定一个高级条件查询,以便一次性获得这两个条件

请不要建议检索所有数据并获取列表的第一个和最后一个元素,因为数据集非常大,从数据库中读取所有数据需要几分钟

我希望此查询可以独立于数据库,但如果这不容易,则假设目标数据库是Oracle。

您可以尝试使用:


请注意,这比运行两个查询要好。但这取决于您使用的数据库。

您只需更改查询即可返回所需的两项。那么您就不必进行大型抓取。
Criteria criteria = ...;
ScrollableResults scroll = criteria.scroll();
Object[] firstRow = scroll.get();  // or use other methods for getting the data
scroll.last();
Object[] lastRow = scroll.get();