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.