Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So vergleichen Sie Daten mit der between-Klausel im Ruhezustand

Sie sollten HQL-Parameter anstelle von Verkettungen verwenden.

Nehmen Sie dieses Beispiel:

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

Dadurch werden die Datumsparameter gebunden und der Ruhezustand nimmt die erforderlichen Konvertierungen vor, um Plausibilitätsprüfungen und Fehler zu vermeiden. Denken Sie daran, dass selbst wenn MySQL Date-Objekte in diesem Format speichert, andere Datenbanken dies möglicherweise nicht tun und die Hibernate-Hilfe untergraben wird.