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 :

Hibernate + order by


Sujet :

Hibernate Java

  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut Hibernate + order by
    J'ai la requete HQL suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM MaClasse maClasse WHERE ...
    Ajouter un order by comme suit fonctionne ("truc" n'est pas une classe) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FROM MaClasse maClasse WHERE ... 
    ORDER BY maClasse.truc
    Par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FROM MaClasse maClasse WHERE ... 
    ORDER BY maClasse.AutreClasse.machin
    ne me retourne pas les mêmes résultats que la précédente car il existe des "maClasse.AutreClasse" nuls. La requete générée par Hibernate est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT ... FROM maClasse, autreClasse 
    WHERE maClasse.autre_id = autreClasse.id ...
    alors qu'il me faudrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT ... FROM maClasse, autreClasse 
    WHERE maClasse.autre_id = autreClasse.id (+) ...
    Comment forcer Hibernate à faire une jointure externe ?

  2. #2
    Membre éclairé Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Par défaut
    Bonjour,

    Pour faire une jointure externe c'est left outer join ou right outer join il me semble.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select ... 
    from maClasse as C1
        left outer join C1.autreClasse as C2
    order by ...
    Point 14.3 de la doc Hibernate.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Et quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT maClasse 
    FROM MaClasse maClasse inner join maclasse.AutreClasse as autreClasse WHERE ... 
    ORDER BY autreClasse.machin
    ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    Je serais donc obligé de modifier de modifier toutes les requêtes en fonction du order by. Il n'y a pas un paramétrage qui pourrait indiquer à Hibernate de faire un jointure externe ? Sinon ça va m'en faire des trucs à modifier !

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Je ne peux pas te dire si ça existe.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    J'ai essayé sur une requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Query requete = session.createQuery(SELECT maClasse 
    FROM MaClasse as maClasse inner join maClasse.AutreClasse as autreClasse
    WHERE  ...  ORDER BY autreClasse.Libelle ASC);
    Hibernate transforme la requete et fait comme avant !

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/06/2011, 11h16
  2. Erreur de hibernate subcriteria cannot be order
    Par air75 dans le forum Hibernate
    Réponses: 0
    Dernier message: 20/01/2010, 11h30
  3. [Data] Spring Hibernate et Flush order
    Par trungsi dans le forum Spring
    Réponses: 5
    Dernier message: 17/02/2009, 09h13
  4. ORDER BY
    Par mythtvtalk.com dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 11/07/2003, 11h56
  5. ORDER BY dans un ordre inhabituel
    Par Riam dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/03/2003, 13h29

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