Hibernate Critères pour les Dates
Dans oracle j'ai les dates dans le format
17-avril-2011 19:20:23.707000000
Je voudrais récupérer toutes les commandes pour le 17-04-2011.
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-YYYY");
String myDate = "17-04-2011";
Date date = formatter.parse(myDate);
Criteria criteria =
session.createCriteria(Order.class);
Criterion restrictDate = Restrictions.like("orderDate",date);
mais il m'apporte de résultats vide:
Vous devez vous connecter pour publier un commentaire.
Pourquoi utilisez-vous
Restrictions.like(...
)?Vous devez utiliser
Restrictions.eq(...)
.Remarque vous pouvez également utiliser
.le
,.lt
,.ge
,.gt
sur la date des objets comme des opérateurs de comparaison.LIKE
opérateur n'est pas approprié pour ce cas depuisLIKE
est utile lorsque vous souhaitez ajuster les résultats en fonction partielle, du contenu d'une colonne.Veuillez voir http://www.sql-tutorial.net/SQL-LIKE.asp pour la référence.
Par exemple, si vous avez un nom de colonne avec des gens de son nom complet, vous pouvez le faire
where name like 'robert %'
de sorte que vous reviendrez toutes les entrées avec nom commençant par'robert '
(%
pouvez remplacer n'importe quel caractère).Dans votre cas, vous savez le contenu intégral de la date à laquelle vous essayez de faire correspondre de sorte que vous ne devriez pas utiliser
LIKE
mais l'égalité. Je suppose que Hibernate ne pas vous donner une exception dans ce cas, mais de toute façon vous allez probablement avoir le même problème avec leRestrictions.eq(...)
.Votre objet date que vous avez obtenu avec le code:
Cette date objet est égale à la 17-04-2011 à 0 heures, 0 minutes, 0 secondes et de 0 nanosecondes.
Cela signifie que vos entrées dans la base de données doit avoir exactement cette date. Ce que je veux dire c'est que si votre base de données d'entrée a une date "17-avril-2011 19:20:23.707000000", alors il ne sera pas récupéré parce que vous demandez simplement que la date: "17-avril-2011 00:00:00.0000000000".
Si vous voulez récupérer toutes les entrées de votre base de données à partir d'un jour donné, vous devrez utiliser le code suivant:
En utilisant de cette façon, vous pouvez obtenir la liste des enregistrements sélectionnés.
Tous les Enregistrements seront générés dans la liste qui sont supérieures ou égales à '08-Oct-2012' ou bien passer la date de l'acceptation par l'utilisateur date au 2ème paramètre de Restrictions (
gregorianCalendar.getTime()
) des critères pour obtenir les enregistrements.essayer cela,
Si la colonne est de type timestamp, vous pouvez effectuer les opérations suivantes: