Proč používáte Restrictions.like(... )?
Měli byste použít Restrictions.eq(...) .
Všimněte si, že můžete také použít .le , .lt , .ge , .gt on date objekty jako operátory porovnání. LIKE operátor není pro tento případ vhodný, protože LIKE je užitečné, když chcete porovnávat výsledky podle částečného obsahu sloupce. Referenční informace najdete na https://www.sql-tutorial.net/SQL-LIKE.asp.
Pokud máte například sloupec se jménem s celým jménem některých lidí, můžete to udělat where name like 'robert %' takže vrátíte všechny položky se jménem začínajícím 'robert ' (% může nahradit jakýkoli znak).
Ve vašem případě znáte celý obsah data, které se pokoušíte najít, takže byste neměli používat LIKE ale rovnost. Myslím, že Hibernate vám v tomto případě nedává žádnou výjimku, ale stejně budete mít pravděpodobně stejný problém s Restrictions.eq(...) .
Váš objekt data, který jste dostali s kódem:
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-YYYY");
String myDate = "17-04-2011";
Date date = formatter.parse(myDate);
Tento objekt data se rovná 17-04-2011 v 0h, 0 minutách, 0 sekundách a 0 nanosekundách.
To znamená, že vaše záznamy v databázi musí mít přesně to datum. Chci říct, že pokud má váš záznam v databázi datum „17-April-2011 19:20:23.707000000“, pak nebude načten, protože se jen zeptáte na toto datum:„17-April-2011 00:00:00,0000000000".
Pokud chcete načíst všechny položky vaší databáze z daného dne, budete muset použít následující kód:
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-YYYY");
String myDate = "17-04-2011";
// Create date 17-04-2011 - 00h00
Date minDate = formatter.parse(myDate);
// Create date 18-04-2011 - 00h00
// -> We take the 1st date and add it 1 day in millisecond thanks to a useful and not so known class
Date maxDate = new Date(minDate.getTime() + TimeUnit.DAYS.toMillis(1));
Conjunction and = Restrictions.conjunction();
// The order date must be >= 17-04-2011 - 00h00
and.add( Restrictions.ge("orderDate", minDate) );
// And the order date must be < 18-04-2011 - 00h00
and.add( Restrictions.lt("orderDate", maxDate) );