我有一个名为 User 的 @Entity。它有一组变更集,如下所示:
@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL, mappedBy="user")
private Set<Changeset> changesets = new HashSet<Changeset>();
我有一个用户存储库:
@Repository
@RestResource(path = "users", rel = "users")
public interface UserRepository extends JpaRepository<User, Long>{ }
和一个变更集存储库:
@Repository
@RestResource(path = "changesets", rel = "changesets")
public interface ChangesetRepository extends JpaRepository<Changeset, Long> { }
调用 GEThttp://localhost:8080/changesets/
或http://localhost:8080/users/
产生分页响应。
如果我调用 GET ,http://localhost:8080/users/1/changesets
那么我会在一个数组中获得所有结果,并且不会发生分页。
有没有办法向 Spring Data Rest 表明我想在通过其父用户访问时以可分页的方式返回变更集集合?变更集集将快速增长,我宁愿不在单个页面中返回大量结果。
编辑:
正如 Willie Wheeler 所建议的,我将其添加到我的 ChangesetRepository 以使其可搜索:
@RestResource(path = "byUser", rel = "byUser")
public Page<Changeset> findByUser(@Param("id") User user, Pageable p);
我离开了双向关系,但也能够通过在变更集上使用来@RestResource(exported=false)
向用户隐藏指向变更集的链接。
旁注:似乎将关系设置为exported=false 隐藏了链接,但实际上并没有删除映射。/users/1/changesets 没有公布,但它仍然有效。