sql >> Database >  >> RDS >> Mysql

Datums vergelijken met tussenclausule in slaapstand

Je zou HQL-parameters moeten gebruiken in plaats van samenvoegen.

Neem dit voorbeeld:

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

Dit zal de datumparameters binden en de slaapstand zal de nodige conversies voor u maken om gezond verstandscontroles en fouten te vermijden. Onthoud dat zelfs als MySQL Date-objecten in dat formaat opslaat, andere databases dat misschien niet doen en het Hibernate-hulp zal ondermijnen.



  1. ClassNotFoundException bij verbinding met Mysql met JDBC

  2. Een waarde retourneren, zelfs als er geen resultaat is

  3. De laatst ingevoegde rij-ID ophalen (met SQL-instructie)

  4. MySQL/Hibernate - Hoe debug ik een MySQL-poolverbinding die steeds wegvalt?