1
respuesta

[Queja] Está incompleto el video: Consultas con parámetros dinámicos

El video esta incompleto y se pierde la secuencia, además de que aparecen clases que no explican como se realizan y es muy confuso y más porque en mi caso, voy siguiendo los videos y anotando los códigos.

1 respuesta

Hola Fredy, espero que estés bien.

Gracias por compartir con nosotros. Lamento mucho que estés teniendo problemas y entiendo que puede ser frustrante cuando los videos están incompletos o no explican adecuadamente los conceptos.

El curso está en proceso de evaluación, pero puedo ayudarte a entender el proceso general de consultas con parámetros dinámicos en Java y JPA.

Para construir una consulta que tenga más de un parámetro de filtrado y que pueda ignorar los parámetros que no se proporcionen. Se utiliza la API de criterio. La consulta se construye utilizando un StringBuilder, donde se van agregando las condiciones de filtrado según los parámetros proporcionados.

Si un parámetro no se proporciona, se ignora en la consulta final.

Aquí hay un ejemplo de cómo se podría construir una consulta con parámetros dinámicos utilizando la API de criterio:

public List<Producto> consultarPorParametros(String nombre, BigDecimal precio, LocalDate fecha) {
    StringBuilder jpql = new StringBuilder("SELECT p FROM Producto p WHERE 1=1");

    if (nombre != null && !nombre.isEmpty()) {
        jpql.append(" AND p.nombre = :nombre");
    }

    if (precio != null && precio.compareTo(BigDecimal.ZERO) != 0) {
        jpql.append(" AND p.precio = :precio");
    }

    if (fecha != null) {
        jpql.append(" AND p.fechaDeRegistro = :fecha");
    }

    TypedQuery<Producto> query = entityManager.createQuery(jpql.toString(), Producto.class);

    if (nombre != null && !nombre.isEmpty()) {
        query.setParameter("nombre", nombre);
    }

    if (precio != null && precio.compareTo(BigDecimal.ZERO) != 0) {
        query.setParameter("precio", precio);
    }

    if (fecha != null) {
        query.setParameter("fecha", fecha);
    }

    return query.getResultList();
}

En este ejemplo, se construye la consulta utilizando el StringBuilder y se agregan las condiciones según los parámetros proporcionados. Luego, se utilizan los métodos setParameter() para establecer los valores de los parámetros en la consulta.

Espero que este ejemplo te ayude a entender cómo construir consultas con parámetros dinámicos en Java y JPA. Además puedes descargar los archivos del proyecto avanzado para consulta. Si tienes alguna pregunta adicional o necesitas más ayuda, no dudes en preguntar.

Espero haber sido de ayuda y ¡buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios