Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como comparar datas usando a cláusula between no hibernate


Você deve usar parâmetros HQL em vez de concatenar.

Tome este exemplo:
Map<String, Object> parameterNameAndValues = new HashMap<String, Object>();

Date startDate;
Date endDate;

// Assign values to startDate and endDate

parameterNameAndValues.put("startDate", startDate);
parameterNameAndValues.put("endDate", endDate);

String hqlQuery = "FROM EntityName WHERE fechaInicio BETWEEN :startDate AND :endDate";

Query query = this.sessionFactory.getCurrentSession().createQuery(hqlQuery);

for (Entry<String, Object> e : parameterNameAndValues.entrySet()) {
    query.setParameter(e.getKey(), e.getValue());
}

return query.list();

Isso vinculará os parâmetros de data e a hibernação fará as conversões necessárias para você, evitando verificações de integridade e erros. Lembre-se que mesmo que o MySQL salve objetos Date nesse formato, outros bancos de dados podem não salvar e isso prejudicará a ajuda do Hibernate.