有效的条件查询只选择查询的第一个和最后一个结果?

时间:2012-11-27 14:13:31

标签: java hibernate hibernate-criteria

我对带有订单的大型数据集进行查询。我只对第一行和最后一行感兴趣。获得第一个结果非常容易(使用Criteria.setMaxResult()),我可以通过颠倒顺序得到最后一个结果。

然而,要获得它们两者似乎需要两个查询,这些查询对数据库可能不是很有效。由于这很容易用SQL实现,我想知道如何制定一个可以同时获得它们的高级条件查询?

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

我希望这个查询可以与数据库无关,但如果这不容易,那么假设目标数据库是Oracle。

1 个答案:

答案 0 :(得分:2)

您可以尝试使用ScrollableResults

Criteria criteria = ...;
ScrollableResults scroll = criteria.scroll();
Object[] firstRow = scroll.get();  // or use other methods for getting the data
scroll.last();
Object[] lastRow = scroll.get();

请注意,此can take even longer比运行两个查询。但这取决于您正在使用的数据库。