Spring 引导:如何在@RepositoryRestResource 上配置分页?

Spring boot: How to configure pagination on a @RepositoryRestResource?

我都看过 this and this question。但是我仍然无法为存储库方法设置分页。不确定我是否受到错误的影响或者只是没有正确编写。基本上我问是否有人可以提供一个示例,说明如何在通过 @RepositoryRestResource 注释导出的存储库方法上实现分页?

我实现分页的尝试

@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRepository extends JpaRepository<User, Long> {

    Page<User> findByUserGroup(@Param("userGroup") String userGroup,
                                            @Param("page") Pageable pageable);

}

代码生成的错误信息

Offending method public abstract org.springframework.data.domain.Page com.project.repository.UserRepository.findByUserGroup(java.lang.String,java.awt.print.Pageable)

我还尝试删除可分页的方法参数,然后导致此错误:

Caused by: java.lang.IllegalArgumentException: Either use @Param on all parameters except Pageable and Sort typed once, or none at all!

我在这个项目中使用的依赖项。

  1. 甲骨文java8.
  2. "org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE",
  3. "org.springframework.boot:spring-boot-starter-web",
  4. "org.springframework.boot:spring-boot-starter-actuator",
  5. 'org.springframework.boot:spring-boot-starter-mail',
  6. "org.springframework.boot:spring-boot-starter-thymeleaf",
  7. "org.springframework.boot:spring-boot-starter-security",
  8. "org.springframework.security.oauth:spring-security-oauth2:2.0.0.RC2",
  9. "org.springframework.boot:spring-boot-starter-data-jpa",
  10. "org.springframework.boot:spring-boot-starter-data-rest",

如有任何帮助,我们将不胜感激。

更新:最终解决方案

将此添加为其他想知道如何执行此操作的人的参考。主要区别在于我必须确保导入正确的 Pageable 对象,如所选答案中所述。

@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRepository extends JpaRepository<User, Long> {

    Page<User> findByUserGroup(@Param("userGroup") String userGroup, Pageable pageable);

}

您正在使用来自错误包的 Pageable class:java.awt.print.Pageable。你应该使用 org.springframework.data.domain.Pageable

似乎有点晚了,但他们的分页解决方案更简单。请参阅下面的代码片段。

public interface NotebookRepository extends PagingAndSortingRepository<Notebook, Long> {

如需完整示例,请查看此 blog