Java ADF:获取RowSetIterator最后一页中的剩余行

Java ADF:获取RowSetIterator最后一页中的剩余行,java,performance,oracle-adf,jdeveloper,Java,Performance,Oracle Adf,Jdeveloper,我有一个rowSetIterator,总共有12行,rangeSize为5。我访问的行如下所示: RowSetIterator rs = vo.getRowSetIterator(); int totalPages = rs.getEstimatedRangePageCount(); for(int pageIndex=0; pageIndex<totalPages; pageIndex++){ rs.scrollToRangePage(pageIndex + 1); Ro

我有一个rowSetIterator,总共有12行,rangeSize为5。我访问的行如下所示:

RowSetIterator rs = vo.getRowSetIterator();
int totalPages = rs.getEstimatedRangePageCount();
for(int pageIndex=0; pageIndex<totalPages; pageIndex++){
    rs.scrollToRangePage(pageIndex + 1);
    Row[] rows = rs.getAllRowsInRange();
    for(int rowIndex=0; rowIndex<rows.length; rowIndex++){
        Row row = rows[rowIndex];
        print(row);
    }
    System.out.println("going to next page");
}
当滚动到最后一页时,是否有方法仅检索剩余的行,即仅访问第11行和第12行(来自上面的示例)

viewObject是一个可更新的对象,访问模式为可滚动


上述案例只是一个例子。在实际情况中,我处理的是更大的范围大小和更大的数据。因此,需要一些帮助来优化我的viewObject以提高效率。

viewObject是一个行迭代器,因此您不需要像这样使用自己的循环进行迭代。通过允许ADF框架处理范围导航,您不应该两次遇到同一行。以下几点可以帮助您接近目标:

vo.reset();//puts us at slot before first row
while(vo.hasNext())
{
  Row row = vo.next();//Automatically navigates rangesets when needed
  print(row);
}

如果您关心性能,请阅读:

如果要遍历所有行,可能需要调整视图,使其具有更大的范围和获取大小(通常建议不超过100)


最后,与您的原始问题更相关的是,您可能希望确保视图调整中的“在通过行集分页时填充最后一页行”选项未选中。

我希望避免使用vo.next(),因为它会因范围而触发查询。VO是多个表的连接,每次触发查询都会影响性能。但既然我还没有找到其他办法,我会坚持下去。
vo.reset();//puts us at slot before first row
while(vo.hasNext())
{
  Row row = vo.next();//Automatically navigates rangesets when needed
  print(row);
}