Java 如何在Spring中保存列表并返回PagedResources

Java 如何在Spring中保存列表并返回PagedResources,java,spring,spring-hateoas,Java,Spring,Spring Hateoas,我有一个列表需要在SpringHateOAS支持的RESTAPI中返回。我试过这个: List<User> users = someUserGenerationMethod(); PageImpl<User> page = new PageImpl<User>(users);//users size is greater than 1 return parAssembler.toResource(page, userResourceAssembler); 以

我有一个列表需要在SpringHateOAS支持的RESTAPI中返回。我试过这个:

List<User> users = someUserGenerationMethod();
PageImpl<User> page = new PageImpl<User>(users);//users size is greater than 1
return parAssembler.toResource(page, userResourceAssembler);
以及:

但是它会导致
java.lang.IllegalArgumentException:页面大小不能小于一


我怎样才能做到这一点呢?

有两种方法可以做到这一点

  • 或者重新查询数据库
    repo.findAll()
    ,以从数据库中获取用户列表(这在涉及一些数据库处理的情况下非常有用,如时间戳或id种子生成)
  • 如果不涉及数据库处理,则我将返回
    generatedUsers
    ,而不是
    savedUsers
    。(在这种情况下,确保
    repo.saveAll(generatedUsers)
    执行成功且无错误)

  • 问题是实例化
    PageImpl
    ,不确定原因,但使用了不同的构造函数:

    Page<User> page = new PageImpl<User>(users, new PageRequest(0, DEFAULT_USER_PAGE_SIZE), 1);
    
    Page Page=new PageImpl(用户,新页面请求(0,默认用户页面大小),1);
    

    解决了这个问题。有人知道为什么吗?错误或错误使用?

    否。我很确定你的GenerateUsers是空的,savedUser也是空的(看到异常)。请进行一点调试,并为您的答案提供一个完整的stacktraceThanks,但问题与持久性无关。它甚至在生成用户列表时也会发生。我更新了问题。
    public class UserResourceAssembler extends ResourceAssemblerSupport<User, UserResource> {...}
    
    public class UserResource extends ResourceSupport{...}
    
    Page<User> page = new PageImpl<User>(users, new PageRequest(0, DEFAULT_USER_PAGE_SIZE), 1);