jueves, 23 de mayo de 2019

Consultando por Timestamp HQL

Es común en aplicaciones la consulta por fechas, entre fechas o por una fecha especifica, en este ejemplo se consulta por un atributo de tipo Timestamp sql, de forma exacta.

Hibernate nos facilita esta query de la siguiente forma en la capa DaoHibernate de una aplicación con Spring de 3 capas (web, service y dao)

consulta desde la clase FormController del package webapp.controller. :

Archivo arch = archivoManager.getArchivoByTMS(skuToRemove.getFechaCreacion());

desde el package service, pasando por la interface archivoManager a la clase archivoManagerImpl

public Archivo getArchivoByTMS(Timestamp fechaCreacion) {
return archivoDao.getArchivoByTMS(fechaCreacion);
}

y desde la capa Dao, en la clase ArchivoDaoHibernate, pasando por la interface ArchivoDao :

public Archivo getArchivoByTMS(Timestamp fechaCreacion) {
        return (Archivo)getSession().createCriteria(Archivo.class).add(Restrictions.eq("fechaCreacion", fechaCreacion)).list().get(0);
}

Se observa que la query HQL, compara de la clase Archivo la fecha exacta de tipo Timestamp con :

Restrictions.eq("fechaCreacion", fechaCreacion)

Retornando el archivo exacto que tiene esa fecha. Hibernate es fácil y provee uso simple de Pojos.

saludos