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 :

problème de jointure


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 14
    Points
    14
    Par défaut problème de jointure
    Bonjour,

    Je viens vers vous car j'ai un problème de HQL. Tout d'abord, je débute en HQL (mais je connais le SQL).

    J'ai deux classes :
    classe A :
    idA
    champs divers
    champTriGroupage

    classe B:
    idB
    idA
    champBooleen
    champs divers

    du points de vue du mapping (et pour des raisons de lourdeur), je n'ai pas mis de relation entre ces deux classes, mais l'idA qui se trouve dans la classe B correspond bien à un idA de la classe A.

    je veux écrire la requête suivante :

    select a.champTriGroupage as idTri sum (case when b.champBooleen = true then 1 else 0 end) from A as a left join B as b on (a.idA = b.idA)) group by a.champTriGroupage

    Le message d'erreur que je reçois est : Path expected for join!

    J'ai écris la même requête en sql, et je n'ai pas d'erreur, je reçois mes résultats.
    Mon problème vient-il du fait que mes deux classes n'ont pas de lien dans leur mapping hibernate ?

    Merci de votre aide

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 477
    Points : 941
    Points
    941
    Billets dans le blog
    5
    Par défaut
    Hibernate est un ORM.

    On lie des objets, pas des ids.

    Donc on doit avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    classe A :
    idA
    Set<ClasseB> classesLieesAClasseA
    champs divers
    champTriGroupage
     
    classe B:
    idB
    ClasseB
    champBooleen
    champs divers
    Après, il faut jouer sur les annotations @OneToMany, @ManyToOne ...
    https://en.wikibooks.org/wiki/Java_P...ence/ManyToOne

    Penser à ce qui est LAZY et EAGER aussi, pour les performances.

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Merci de votre réponse,

    Vous me confirmez donc que sans mettre une relation entre mes classes je ne peux pas faire de jointure sur un champ commun ?
    (Je voulais justement éviter cela car ce sont des classes très "lourdes" et que la relation est many-to-many)

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    477
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 477
    Points : 941
    Points
    941
    Billets dans le blog
    5
    Par défaut
    Oui. Hibernate/JPA est un ORM et il faut penser ORM!

Discussions similaires

  1. Problème de jointure de tables
    Par AurelBUD dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/04/2005, 17h27
  2. Probléme de jointure
    Par Ajrarn dans le forum Langage SQL
    Réponses: 14
    Dernier message: 24/02/2005, 15h57
  3. Vraisemblable problème de jointure
    Par pimousse76 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/02/2005, 16h34
  4. [MS Access] Problème de jointure
    Par Erakis dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/02/2005, 22h15
  5. Problème de jointure ?!
    Par ebaynaud dans le forum Langage SQL
    Réponses: 8
    Dernier message: 03/11/2004, 12h27

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