【发布时间】:2015-10-01 12:18:28
【问题描述】:
我正在使用 spring-data-rest 和 JpaRepository 来创建 Rest-Endpoints。默认情况下,为所有JpaRepository启用分页,这是一件好事。但是我有一个遗留应用程序,我们将它移植到不支持分页的新堆栈。我想根据 URL 参数禁用分页,以便仍然能够在新的应用程序代码中使用分页。
我尝试了各种方法来公开资源(有和没有分页):
- 使用
CrudRepository:导致只有一个未分页的端点并且缺少flush方法。 - 在我的存储库接口中覆盖
List<T> findAll()方法并使用RestResource对其进行注释。我原以为该方法将作为搜索方法公开,但事实并非如此。 - 用
@RestResource(exported=false)注释Page<T> findAll(Pageable pageable)并像前面的子弹一样注释List<T> findAll()。我希望这取代了默认方法。但这无论如何都不是有效的解决方案,因为只公开了一个非分页端点。 - 传递
size=-1以获得无限结果 -> 使用默认分页大小
我已经看到弹簧控制器RepositoryEntityController 使用RepositoryInvoker 来调用存储库上的方法。 Pageable 使用 PageableHandlerMethodArgumentResolver 解析,它始终返回可分页(在查询中指定、注释或默认可分页)。
我目前看到的唯一解决方案是实现一个自定义 PageableHandlerMethodArgumentResolver,如果传递了自定义 url 参数,则返回 null。
您是否知道任何其他解决方案或未来是否有类似的计划?
【问题讨论】:
标签: spring-data-rest paging spring-data-rest