Resolução do desafio:
1- Adicionando opção 8 ao menu:
public void exibeMenu() {
var opcao = -1;
while(opcao != 0) {
var menu = """
8 - Buscar séries por temporadas e avaliação
0 - Sair
""";
System.out.println(menu);
opcao = leitura.nextInt();
leitura.nextLine();
switch (opcao) {
case 8:
buscarSeriesPorTemporadaEAvaliacao();
break;
case 0:
System.out.println("Saindo...");
break;
default:
System.out.println("Opção inválida");
}
}
}
2- Criando (derived query) método findByTotalTemporadasLessThanEqualAndAvaliacaoGreaterThanEqual :
public interface SerieRepository extends JpaRepository<Serie, Long>{
List<Serie> findByTotalTemporadasLessThanEqualAndAvaliacaoGreaterThanEqual(Integer numeroMaxTemporadas, Double avaliacao);
}
3- Construindo o método buscarSeriesPorTemporadaEAvaliacao
private void buscarSeriesPorTemporadaEAvaliacao() {
System.out.println("Qual a quantidade máxima de temporadas a série deve ter?");
var qntTemporada = leitura.nextInt();
System.out.println("Avaliação igual ou superior a qual valor? ");
var avaliacao = leitura.nextDouble();
List<Serie> seriesPorTemporadaEAvaliacao = repositorio.findByTotalTemporadasLessThanEqualAndAvaliacaoGreaterThanEqual(qntTemporada, avaliacao);
if (!seriesPorTemporadaEAvaliacao.isEmpty()) {
System.out.println("Séries com menos de " + (qntTemporada + 1) + " temporadas e com Avaliação igual ou superior a " + avaliacao + ":");
seriesPorTemporadaEAvaliacao.forEach(System.out::println);
} else {
System.out.println("Nenhuma série encontrada!");
}
}