Sac*_*rma 5 java spring spring-data spring-data-jpa
我想要的:跳过spring执行的计数查询findAll(Pageable).
我发现有这样的UI(下一个基础)的Slice数据类型,不需要总记录/页面,因此不需要计数查询.
我可以使用Slice返回类型findByName(Pageable)等方法,但如果我使用Slice for findAll(Pageable),它仍然执行计数查询.
有没有解决方法,我可以使用切片来findAll避免计数查询?
PS:我想要切片提供的功能 - hasNext,size等,我也不需要使用规范.
任何帮助表示赞赏.
可以使用Slicewith findAll()- 您只需要扩展正确的 Spring JPA Repository。
如果您扩展JpaRepository,它将不起作用,因为它扩展了PagingAndSortingRepository并且findAll(Pageable pageable)在 Paging 存储库中已经定义了方法。
如果您扩展,CrudRepository那么您将能够Slice<T> findAll(Pageable pageable)在您的存储库中定义方法。
您可以为此使用查询派生。基于Spring Data JPA 示例:
/**
* Returns a {@link Slice} counting a maximum number of {@link Pageable#getPageSize()} users matching given criteria
* starting at {@link Pageable#getOffset()} without prior count of the total number of elements available.
*
* @param lastname
* @param page
* @return
*/
Slice<User> findByLastnameOrderByUsernameAsc(String lastname, Pageable page);
Run Code Online (Sandbox Code Playgroud)
您可以通过将以下内容添加到存储库来根据您的需要进行修改:
Slice<User> findBy(Pageable page);
Run Code Online (Sandbox Code Playgroud)
由于它没有任何其他条件,因此它只执行findAll单个页面,但没有计数查询。
| 归档时间: |
|
| 查看次数: |
3155 次 |
| 最近记录: |