3
respostas

Numa requisição get, quero trazer os dados ordenados por um determinado campo

Boa noite.

Estou usando Java e Spring Boot. Por exemplo, quando faço uma requisição do tipo Get, quero que os dados sejam retornados ordenados por um determinado campo, que é uma String de um campo status de vendas: Exemplo, este campo possui os conteúdos Vendido, Comprado e Aguardando. Quero retornar no get mas na ordem alfabética acima. Mas sem usar parâmetros de URL. Como posso fazer isto ?

Obrigado Fagner

3 respostas

Oi!

Se a ordenação não será feita pelo cliente, via parâmetros da url, então você deve criar um novo método na interface repository seguindo o padrão de nomenclatura do Spring Data. Algo como:

List<Venda> findAllOrderByStatus(Pageable paginacao);

Bom dia Rodrigo, obrigado pela resposta.

Acho que eu não expliquei direito, não seria bem Ordenar, na verdade eu precisaria personalizar uma ordem, teria que exibir primeiro o Vendido, Aguardando, e depois Comprado. Teria uma forma de personalizar assim ?

Obrigado

Entendi. Pode ser feito via ordenação na consulta com JPQL. Algo como:

@Query("SELECT v FROM Venda v ORDER BY CASE WHEN v.status = 'Vendido' THEN 1 WHEN v.status = 'Aguardando' THEN 2 WHEN v.status = 'Comprado' THEN 3 ELSE 4 END")
List<Venda> listarOrdenadoPeloStatus(Pageable paginacao);