1

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

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

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

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

4

1 回答 1

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();

请注意,这可能需要比运行两个查询更长的时间。但这取决于您使用的数据库。

于 2012-11-27T21:07:59.590 回答