-->
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.  [ 2 posts ] 
Author Message
 Post subject: Comparaison dates avec oracle
PostPosted: Fri Jun 24, 2005 11:55 am 
Beginner
Beginner

Joined: Mon May 02, 2005 2:13 pm
Posts: 20
Location: France
Salut,

hibernate 3.05
oracle 8.1.7

Pour mes tests, j'utilise un table simple non associée qui s'appelle: LIGNECDECLIENT. Cette table possede un attribut DATECREATION du type date. Elle est mappée dans ma classe avec un type Calendar. Je gère les brgin et commit dans une autre couche.

J'ai un problème de comparaison de date. Je veux récuperer toutes les lignes de commande qui ont une date == à ma date passée en paramètre.

Pour la date que je passe en paramètre, je devrais recupérer 4 lignes de commande. Je fait un System.out de idLigne pour afficher l'id des lignes.

Problème, je récupere bien 4 lignes de commandes, mais 3 fois la première et une fois la 3 iéme.
J'ai effectué mes tests avec l'api criteria et avec SQLQuery avec le meme résultat (voir code).
PS: Je récupère les bonnes lignes en sql classique.



Code:
    public List getListeLigneCommandesClientByDateDay(String codeClient,Calendar daydate) {
      List liste = new ArrayList();
      try {
         
         // String date = "07-JUN-05";
         // String q ="select {lcc.*} from APISOFT_DOS_PROMATEX.LIGNECDECLIENT lcc "+
           //   "where lcc.DATELIVRAISON ='"+date+"'";
         // SQLQuery query = PersistanceManager.getSession().createSQLQuery(q);
         // query.addEntity("lcc",LigneCommandeClient.class);
         // liste = query.list();
      
           Criteria crit = PersistanceManager.getSession()
              .createCriteria(LigneCommandeClient.class)
              .add(Expression.eq("dateLivraison",daydate));
         liste = crit.list();
           // .createCriteria("commandeClient")
           // .createCriteria("client")
           // .add(Expression.eq("codeClient","GALISS"));*/   
        } catch (HibernateException e) {
            e.printStackTrace();
        }
        return liste;
    }


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jul 08, 2005 9:10 am 
Regular
Regular

Joined: Tue May 03, 2005 8:19 am
Posts: 53
Location: Paris
Tu compares des dates sous forme de chaine.
Ton problème sera surement corrigé avec un TO_DATE(varchar, pattern) (Propre a Oracle, mais bien déclaré dans le Oracle9Dialect).

Code:
"where lcc.DATELIVRAISON = TO_DATE('"+date+"', 'DD-MM-YYYY')";


Si ce n'est pas le cas, tes dates en base stockent peut être aussi les informations heures, minutes, ... dans ce cas la, passe par la fonction TRUNC.

Personnellement, je partirai de la chaine JDBC générée par Hibernate pour trouver la bonne syntaxe de comparaison, puis son implementation dans le Dialect du SGBD concerné ici Oracle9Dialect.

Voir la réponse de gavin sur la comparaison des dates :
http://forum.hibernate.org/viewtopic.ph ... comparison


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 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.