Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment comparer les dates en utilisant la clause between dans hibernate

Vous devriez utiliser des paramètres HQL au lieu de concaténer.

Prenons cet exemple :

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();

Cela liera les paramètres de date et l'hibernation effectuera les conversions nécessaires pour vous en évitant les vérifications d'intégrité et les erreurs. N'oubliez pas que même si MySQL enregistre les objets Date dans ce format, d'autres bases de données peuvent ne pas le faire et cela sapera l'aide d'Hibernate.