These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: Recherche par critère, problème avec les dates
PostPosted: Wed Oct 18, 2006 10:54 am 
Newbie

Joined: Wed Oct 18, 2006 9:48 am
Posts: 2
Voilà, je dois faire une recherche par critère. L'application étant déjà très consistante, il faut que j'utilise une fonction du type :

List criteres = new ArrayList();
criteres.add(Expression.eq("cle.contrat.numero", new Integer(contratNum)));
criteres.add(Expression.??("dateCloture", new Date());

Seulement, je ne sais pas quelle méthode de la class Expression utiliser afin de sélectionner les dateCloture après la date d'aujourd'hui (new Date()).


Top
 Profile  
 
 Post subject: Re: Recherche par critère, problème avec les dates
PostPosted: Wed Oct 18, 2006 12:49 pm 
Newbie

Joined: Wed Oct 18, 2006 11:18 am
Posts: 9
Location: Nanterre, France
Tu veux donc les entités dont la propriété "dateCloture" est supérieure (ou égale ?) à maintenant ("new Date()") : il te faut utiliser "Expression.gt" ("greater than" - strictement supérieur à) ou "Expression.ge" ("greater than or equal" - supérieur ou égal à).

Attention néanmoins, à utiliser comme valeur de référence une valeur de type compatible avec le format de date utilisée dans la base de données : pour une colonne de type DATE, il faut utiliser le type java.sql.Date (et non pas java.util.Date), car les dates SQL n'ont pas d'informations horaires.
Si tu compares des données SQL DATE avec des java.util.Date, tu vas avoir quelques surprises...

Cela donnerait donc :
Code:
criteres.add( Expression.ge( "dateCloture", new java.sql.Date( System.currentTimeMillis() ) );


Top
 Profile  
 
 Post subject:
PostPosted: Mon Oct 23, 2006 4:07 am 
Newbie

Joined: Wed Oct 18, 2006 9:48 am
Posts: 2
Oui, c'est bien ce que je voulais. Mais l'architecture de l'appli est différente de ce que je pensais, seules les dateCloture passaient sont entrées, les autres sont à nulles.
J'ai donc essayé de contourner le problème en passant par lt (lower than, je suppose) :
Code:
criteres.add( Expression.ge("dateCloture", new java.sql.Date( System.currentTimeMillis())));

Cette commande renvoie bien les bons objets.
Par contre, étant donné que je veux l'inverse, j'utilise un not :
Code:
criteres.add(Expression.not(Expression.lt("dateCloture", new java.sql.Date( System.currentTimeMillis())))

Cette fois, aucun objet n'est renvoyé.


J'ai aussi essayé une comparaison à null :
Code:
criteres.add( Expression.eq("dateCloture", ""));

Code:
criteres.add( Expression.eq("dateCloture", null));

Mais pareil, rien n'est renvoyé.



Edit : Problème résolu avec :
Quote:
criteres.add( Expression.isNull("dateCloture"));


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.