Anda harus menggunakan parameter HQL alih-alih menggabungkan.
Ambil contoh ini:
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();
Ini akan mengikat parameter tanggal dan hibernasi akan membuat konversi yang diperlukan agar Anda menghindari pemeriksaan dan kesalahan kewarasan. Ingatlah bahwa meskipun MySQL menyimpan objek Date dalam format itu, database lain mungkin tidak dan itu akan merusak bantuan Hibernate.