IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

pb Hibernate-HSQL parenthèse dans condition Where


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 7
    Par défaut pb Hibernate-HSQL parenthèse dans condition Where
    bonjour, j'ai un petit problème avec hibernate et l'interprétation qu'il fait de mon ordre HSQL en ce qui concerne les parenthèses, en effet il ne se soucie pas des regroupements que je fais dans mon ordre hsql.

    j'ai du code de ce type dans le fichier de mapping

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <query name="Dep _findByHeureDateLieu">
       select new list(deplacement)
             FROM Deplacement AS deplacement
                WHERE deplacement.dateHeureDepartAller >= :dateHeureDepartAller 
                  AND deplacement.dateHeureArriveeAller <= :dateHeureArriveeAller 
                  and ((deplacement.itineraireAller is null or
                  	     ( deplacement.itineraireRetour is not null  and upper(deplacement.itineraireRetour.lieuArrive) LIKE upper(:lieuArrive) 
    		     ))
       )
                order by deplacement.dateHeureDepartAller desc
     
    </query>
    et il me le convertit comme suit dans la log hibernate ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
        inner join ...
     
          WHERE (
                   deplacement.dateHeureDepartAller >= ?
                  )
                  AND (
                    deplacement.dateHeureArriveeAller <= ?  
                  )
                  and (
                     deplacement.itineraireAller is null 
                  )
                    OR ( 
                     deplacement.itineraireRetour is not null  
                   )
                      AND (
                      upper(deplacement.itineraireRetour.lieuArrive) LIKE upper(?) 
                  )
                  .....
    en fait il met tout à la suite dans le where ce qui fait que mes conditions OR se retrouve enchainé avec les conditions AND et ne retourne pas bien entendu le resultat escompté ...

    merci d'avance pour toute piste

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    En rajoutant des parentheses comme ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ((
    
    (deplacement.itineraireAller is null) or
                  	     ( deplacement.itineraireRetour is not null  and upper(deplacement.itineraireRetour.lieuArrive) LIKE upper(:lieuArrive) 
    		     ))
       )

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 7
    Par défaut
    ca ne marche pas non plus avec ta syntaxe willoi,

    apparement hibernate retraduit logiquement les conditions mais sur un seul niveau ....

    j'ai essayé tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ( (1=1) and  ( (2=2) or (3=3))  )
    ce qui donne la bonne interprétation hibernate :
    par contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ((1=1) and ( (2=2) or ( (3=3) and (4=4) )))
    donne une fois interprétée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     1=1 and ( 2=2 or 3=3 and 4=4)
    il n'a pas tenu compte de la bonne logique

    est-ce un bug ???

    jai positionné les parametres suivants aussi dans hibernate.cfg.xml
    <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
    <property name="max_fetch_depth">3</property>

    mais ça ne change rien

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 7
    Par défaut
    Personne n'a d'idée ...

    Je planche dessus mais toujours pas de résultat, ça doit quand même être possible de faire des critères multiples avec des OR ???

    Merci pour toutes pistes à exploiter car je commence à désespérer

Discussions similaires

  1. sql - Textbox dans condition WHERE
    Par TheEdge dans le forum VB.NET
    Réponses: 6
    Dernier message: 24/09/2012, 20h17
  2. [AC-2007] opérateur ET dans condition WHERE
    Par papagei2 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 13/09/2009, 10h43
  3. condition where dans macro
    Par ludo50 dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/11/2006, 08h15
  4. Fonction MAX dans une condition WHERE
    Par borgfabr dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/10/2004, 16h06
  5. Réponses: 6
    Dernier message: 24/09/2004, 13h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo