Coleta filho paginável restante de dados da primavera
Eu tenho uma @Entity chamada Usuário. Ele tem um conjunto de conjuntos de alterações da seguinte maneira:
@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL, mappedBy="user")
private Set<Changeset> changesets = new HashSet<Changeset>();
Eu tenho um UserRepository:
@Repository
@RestResource(path = "users", rel = "users")
public interface UserRepository extends JpaRepository<User, Long>{ }
E um ChangesetRepository:
@Repository
@RestResource(path = "changesets", rel = "changesets")
public interface ChangesetRepository extends JpaRepository<Changeset, Long> { }
Chamando GET onhttp://localhost:8080/changesets/
ouhttp://localhost:8080/users/
produz uma resposta paginada.
Se eu ligar para GET onhttp://localhost:8080/users/1/changesets
então eu recebo todos os resultados em uma única matriz e nenhuma paginação ocorre.
Existe uma maneira de indicar ao Spring Data Rest que eu quero retornar a coleção de conjuntos de alterações de uma maneira paginável ao acessá-la por meio do usuário pai? O conjunto de conjuntos de alterações aumentará rapidamente e eu prefiro não retornar muitos resultados em uma única página.
EDITAR:
Conforme sugerido por Willie Wheeler, adicionei isso ao meu ChangesetRepository para torná-lo pesquisável:
@RestResource(path = "byUser", rel = "byUser")
public Page<Changeset> findByUser(@Param("id") User user, Pageable p);
Deixei o relacionamento bidirecional, mas também consegui ocultar o link para os conjuntos de alterações de um usuário usando@RestResource(exported=false)
no conjunto de conjuntos de alterações.
Nota: Parece que a configuração do relacionamento como exportado = false oculta o link, mas na verdade não remove o mapeamento. / users / 1 / changesets não é anunciado, mas ainda é válido.