Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] findTop5ByOrderByAvaliacaoDesc()

Olá Bom dia, como vai? Na interface conforme abaixo, utilizando como exemplo findTop5ByOrderByAvaliacaoDesc,´sabemos que queremos avaliações Top 5, mas a minha dúvida é se a palavra Top5 refere-se a propriedade da classe ou posso dizer qualquer nome? (isto vale para a penúltima linha que possui: findByAtoresContainingIgnoreCaseAndAvaliacaoGreaterThanEqual):

public interface SerieRepository extends JpaRepository<Serie, Long> { Optional findByTituloContainingIgnoreCase(String nomeSerie);

List<Serie> findByAtoresContainingIgnoreCaseAndAvaliacaoGreaterThanEqual(String nomeAtor, Double avaliacao);

List<Serie> findTop5ByOrderByAvaliacaoDesc();

}

obrigado,
Mauricio Gomes
1 resposta
solução!

A palavra Top5 no método findTop5ByOrderByAvaliacaoDesc() não se refere a um atributo da sua entidade Serie. Ela faz parte da convenção de nomenclatura do Spring Data JPA para limitar a quantidade de resultados retornados pela consulta.

Explicação

O Spring Data JPA interpreta o nome do método para construir a consulta. Veja o que cada parte significa:

List<Serie> findTop5ByOrderByAvaliacaoDesc();
  • find — inicia a construção da consulta.
  • Top5 — indica que você quer os 5 primeiros resultados.
  • ByOrderByAvaliacaoDesc — define a ordenação: ordena pela propriedade avaliacao em ordem decrescente.

Ou seja, o Top5 é um recurso do Spring Data JPA para limitar resultados, e não um campo da sua entidade.

Você pode trocar esse número livremente, por exemplo:

List<Serie> findTop10ByOrderByAvaliacaoDesc();

Sobre o outro método

No caso de:

List<Serie> findByAtoresContainingIgnoreCaseAndAvaliacaoGreaterThanEqual(String nomeAtor, Double avaliacao);

Aqui, sim, os nomes Atores e Avaliacao são diretamente relacionados às propriedades da entidade Serie.

O Spring interpreta os operadores:

  • ContainingIgnoreCase — faz um LIKE ignorando maiúsculas e minúsculas.
  • GreaterThanEqual — compara se é maior ou igual.