Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Como apenas ordenar, por mais de um atributo, sem paginar?

Gostaria de apenas ordenar, por mais de um atributo da tabela, sem paginação.

Minha aplicação está funcionando adequadamente, retornando todos os registros, porém sem a ordenação desejada.

Trata-se de uma aplicação simples, com apenas uma tabela. Mas, precisaria que o retorno fosse equivalente a um " select * from TABELA order by CAMPO1, CAMPO2" e não estou acertando a fazer isso.

6 respostas

Oi Suzane,

Basta você chamar a API passando na URL os parâmetros de ordenação:

http://localhost:8080/topicos?sort=titulo,asc&sort=dataCriacao,desc

E no seu controller ao invés de devolver um objeto Page<Topico> você deve retornar um List<Topico>, para não haver paginação.

Bons estudos

Muito obrigada, Rodrigo!

Eu queria ao chamar a URL, já receber o resultado ordenado!

Por exemplo:

http://localhost:8080/locais

E receber como retorno a lista de locais já ordenados por municipio e nome.

Eu já estava retornando List no controller.

Tem como fazer assim?

solução!

Você vai ter que chamar utilizando a URL assim então:

http://localhost:8080/locais?sort=municipio&sort=nome

Precisa passar os campos para ordenar pela URL mesmo, depois do símbolo de ?

Obrigada, Rodrigo!

Não era exatamente o que a gente queria, mas tudo bem!

Caso você não queira passar na URL os parâmetros para ordenação, pode utilizar no seu controller a anotação @PageableDefault, conforme mostrei nessa aula: https://cursos.alura.com.br/course/spring-boot-seguranca-cache-monitoramento/task/55836

Pois assim a ordenação será efetuada por padrão.

No seu caso acho que seria algo como:

@PageableDefault(sort = {"municipio", "nome"})

Muito obrigada, Rodrigo!

Sem dúvidas, essa é uma boa solução, que atende ao que precisamos.

Eu havia resolvido de outra forma: criei um método na interface repository e usei a anotação @Query para fazer a query exatamente como eu queria.

Ficou assim:

@Query("SELECT l FROM local l ORDER BY l.municipio,l.nome")
List<Local> listarTodosOrdenadoPorMunicipioNome();

Encontrei a solução na aula3 do curso1.

Parabéns pelos 2 cursos. Eles estão nos ajudando muito na construção de 2 aplicações novas, que estamos concluindo.