Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haga lo que aprendimos en aula en el aula:

package com.aluracursos.screenmatch.repository;

import com.aluracursos.screenmatch.model.Categoria;
import com.aluracursos.screenmatch.model.Serie;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;
import java.util.Optional;

public interface SerieRepository extends JpaRepository<Serie, Long> {

List<Serie> findByGenero(Categoria categoria);

List<Serie> findByGeneroIn(List<Categoria> categorias);

List<Serie> findByGeneroNot(Categoria categoria);

List<Serie> findByGeneroAndEvaluacionGreaterThanEqual(
        Categoria categoria,
        Double evaluacion
);

List<Serie> findByGeneroAndTotalTemporadasLessThanEqual(
        Categoria categoria,
        Integer totalTemporadas
);

long countByGenero(Categoria categoria);

boolean existsByGenero(Categoria categoria);

Optional<Serie> findFirstByGeneroOrderByEvaluacionDesc(Categoria categoria);

}

Categoria categoria = Categoria.fromEspanol("Acción");

List series = repository.findByGenero(categoria);

List seriesBienEvaluadas =
repository.findByGeneroAndEvaluacionGreaterThanEqual(categoria, 8.0);

Optional mejorSerie =
repository.findFirstByGeneroOrderByEvaluacionDesc(categoria);

long total = repository.countByGenero(categoria);

1 respuesta

¡Hola Alexis, espero que estés bien!

Parece que estás trabajando con consultas derivadas en Spring Data JPA, y estás intentando implementar varios métodos de búsqueda en tu interfaz SerieRepository. A partir de lo que has compartido, parece que estás en el camino correcto. Estás utilizando palabras clave de JPA para definir métodos que automáticamente generarán las consultas necesarias.

Aquí te dejo un pequeño resumen de lo que cada método en tu interfaz hace:

  • findByGenero(Categoria categoria): Encuentra todas las series que pertenecen a una categoría específica.
  • findByGeneroIn(List<Categoria> categorias): Encuentra todas las series que pertenecen a cualquiera de las categorías en la lista proporcionada.
  • findByGeneroNot(Categoria categoria): Encuentra todas las series que no pertenecen a la categoría especificada.
  • findByGeneroAndEvaluacionGreaterThanEqual(Categoria categoria, Double evaluacion): Encuentra todas las series de una categoría que tienen una evaluación mayor o igual a la especificada.
  • findByGeneroAndTotalTemporadasLessThanEqual(Categoria categoria, Integer totalTemporadas): Encuentra todas las series de una categoría que tienen un número de temporadas menor o igual al especificado.
  • countByGenero(Categoria categoria): Cuenta cuántas series pertenecen a una categoría específica.
  • existsByGenero(Categoria categoria): Verifica si existe al menos una serie en la categoría especificada.
  • findFirstByGeneroOrderByEvaluacionDesc(Categoria categoria): Encuentra la serie mejor evaluada dentro de una categoría específica.

Parece que estás utilizando estos métodos correctamente en tu código. Por ejemplo, repository.findByGeneroAndEvaluacionGreaterThanEqual(categoria, 8.0) te devolverá una lista de series en la categoría "Acción" que tienen una evaluación de al menos 8.0.

Si estás enfrentando algún problema específico al ejecutar este código o al obtener los resultados esperados, asegúrate de que las entidades y las relaciones estén correctamente configuradas en tu modelo. También verifica que la base de datos tenga los datos esperados para realizar estas consultas.

Espero que esto te ayude a avanzar en tu proyecto. ¡Bons estudios!