我有一个List我需要在Spring Hateoas支持的REST API中作为PagedResources返回。我试过这个:
List<User> users = someUserGenerationMethod();
PageImpl<User> page = new PageImpl<User>(users);//users size is greater than 1
return parAssembler.toResource(page, userResourceAssembler);
有:
@Autowired
private PagedResourcesAssembler<User> parAssembler;
和userResourceAssembler
是一个例子:
public class UserResourceAssembler extends ResourceAssemblerSupport<User, UserResource> {...}
和:
public class UserResource extends ResourceSupport{...}
但它导致java.lang.IllegalArgumentException: Page size must not be less than one!
我怎么能实现这一目标?
问题是实例化PageImpl
,不知道为什么但使用不同的构造函数:
Page<User> page = new PageImpl<User>(users, new PageRequest(0, DEFAULT_USER_PAGE_SIZE), 1);
解决了这个问题。有人知道为什么吗?错误或使用不当?
有两种方法可以实现它。
repo.findAll()
以获取数据库中的用户列表(如果涉及某些数据库处理,例如id的时间戳或种子生成,这非常有用)。generatedUsers
而不是savedUsers
。 (在这种情况下,请确保repo.saveAll(generatedUsers)
成功执行且没有错误)。