通过RepositoryItemReader而不是分页进行切片(以避免重复计数查询)

时间:2019-05-30 16:23:55

标签: spring-data-jpa spring-batch

在RepositoryItemReader中,我们希望避免重复计算性能,并使用JpaRepository中带有“ Slice”而不是“ Page”的方法(方法中仍将Pageable作为参数)。当在“ doPageRead”方法中转换为“ Page”时,它会失败-并且即使文档注释应该能够覆盖,也无法简单地覆盖它。除了如何将RepositoryItemReader与切片而不是页面一起使用之外,还有其他有关如何覆盖的建议,而不是将整个RepositoryItemReader复制到另一个不执行此转换的实现中?预先感谢。

RepositoryItemReader中的当前方法,我们想使用“切片”将类型转换为“页面”:

protected List<T> doPageRead() throws Exception {
    Pageable pageRequest = PageRequest.of(page, pageSize, sort);

    MethodInvoker invoker = createMethodInvoker(repository, methodName);

    List<Object> parameters = new ArrayList<>();

    if(arguments != null && arguments.size() > 0) {
        parameters.addAll(arguments);
    }

    parameters.add(pageRequest);

    invoker.setArguments(parameters.toArray());

    Page<T> curPage = (Page<T>) doInvoke(invoker);

    return curPage.getContent();
}

在此页面中阅读(doPageRead)-我看到它在Javadoc中被评论为可以覆盖,但是许多字段/方法是私有的?没有人有doPageRead所需的最小替代量的简单示例吗?

0 个答案:

没有答案