Búscalo aquí:

Comparación de objetos Date en JPQL usando JPA


Cuando trabajamos sobre consultas a Base de Datos es común que necesitemos hacer diferentes tipos de filtros en nuestras búsquedas, entre ellas, el filtro por fechas es uno de los más comunes. cuando trabajamos en JDBC una simple comparación basta y sobra, pero cuando trabajamos en la API de persistencias de Java (JPA) la situación es algo diferente. En el presente post se mostrará como podemos hacer comparaciones de fechas entre elementos TimeStamp en una Base de Datos representados como objetos Date en Java.


Para comenzar, cuento con una clase bean denominada FidPedidoVenta, la cual tiene un elemento Date createdAt que a su vez es la representación @Temporal(TemporalType.TIMESTAMP) de un campo TimeStamp en la respectiva Base de Datos. Ver siguiente imagen:


Ahora lo que necesito es una consulta en la cual me reporte todos los elementos FidPedidoVenta que se hayan creado despues de una determinada fecha, la cual sera tambien un elemento Date que me servirá de filtro y estará representada como la variable Date fechaInicio. Entonces nuestra consulta java persistence query - JPQL - será:

  1. String jpql = "SELECT pv FROM FidPedidoVenta pv
  2. WHERE pv.createdAt >= :fechainicio ";
...Sencillo, pero ahi no termina todo, lo verdaderamentamente importante viene en la instanciación del token fechainicio por la variable fechaInicio, la cual sería así:

  1. Calendar inicio = Calendar.getInstance();
  2. inicio.set(fechaInicio.getYear()+1900,
  3. fechaInicio.getMonth()+1,
  4. fechaInicio.getDate());
  5. Query query = entityManager.createQuery(jpql);
  6. query.setParameter("fechainicio",
  7. new java.sql.Date(inicio.getTime().getTime()));
  8. List<FidPedidoVenta> lstPedidosVenta = query.getResultList();

Como ven, nos valemos de la clase Calendar de Java para obtener la data que normalmente teniamos en el elemento de tipo Date de Java y poder darle el formato Date que usa el lenguaje SQL.

Luego es cuestión de continuar connuestro trabajo.


Espero les sea de utilidad, saludos.

Quieres leer más post como éste???...suscribete aquí!!!

3 comentarios:

  1. hi.. just dropping by here... have a nice day! http://kantahanan.blogspot.com/

    ResponderEliminar
  2. como harías una búsqueda por mes ... por ejemplo
    todo lo de enero???

    ResponderEliminar
  3. Muy buen comentario, yo estaba pasando fechas Date de java.util.date y no las interpreta bien, funciona ok pasandolas a java.sql.date

    Saludos

    ResponderEliminar

Bienvenido a jcGeorge's Blog!!!

Por favor deja tu comentario, consulta o sugerencia, procura mantener habilitado tu perfil de Blogger o deja un enlace a tu blog o web.

Gracias por leer este blog!!!

Related Posts Plugin for WordPress, Blogger...