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 :

Au moyen de criteria faire deux jointures reliées par un OR [Criteria]


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 98
    Par défaut Au moyen de criteria faire deux jointures reliées par un OR
    Bonjour à toutes et à tous...

    Je me retrouve à devoir transformer en Criteria la requête suivante :


    select
    count(distinct sallebean8_.SAL_ID) as y0_,
    schemainst3_.SIM_DATEDEBUT as y1_
    from
    LIGNEOFFRE_LIO this_
    inner join
    LIGNEOFFRECOMPOSANTPRODUIT listecompo14_
    on this_.LIO_ID=listecompo14_.LIO_ID
    inner join
    COMPOSANTPRODUIT_COP composantp1_
    on listecompo14_.COP_ID=composantp1_.COP_ID
    left outer join
    COMPOSANTBACS_CBA composantb6_
    on composantp1_.COP_ID=composantb6_.COP_COMPOSANTPRODUIT_ID
    left outer join
    BAC_BAC bac10_
    on composantb6_.BAC_BAC_ID=bac10_.BAC_ID
    left outer join
    COMPOSANTCOMPLEXES_CCO composantc5_
    on composantp1_.COP_ID=composantc5_.COP_COMPOSANTPRODUIT_ID
    left outer join
    COMMUNE_COM communes11_
    on bac10_.BAC_ID=communes11_.BAC_BAC_ID
    left outer join
    COMPLEXE_CPX complexe7_
    on complexe7_.COM_COMMUNE_ID = communes11_.COM_ID OR composantc5_.CPX_COMPLEXE_ID = complexe7_.CPX_ID

    left outer join
    COMPOSANTSALLES_CSA composants4_
    on composantp1_.COP_ID=composants4_.COP_COMPOSANTPRODUIT_ID
    inner join
    SALLE_SAL sallebean8_
    on complexe7_.CPX_ID=sallebean8_.CPX_COMPLEXE_ID OR composants4_.SAL_SALLE_ID = sallebean8_.SAL_ID
    inner join
    SCHEMAINSTALLATIONGROUPEDIFFUSION_SGD schemainst2_
    on this_.LIO_ID=schemainst2_.LIO_LIGNEOFFRE_ID
    inner join
    SCHEMAINSTALLATIONMAILLE_SIM schemainst3_
    on schemainst2_.SGD_ID=schemainst3_.SGD_SCHEMAINSTALLATIONGROUPEDIFFUSION_ID
    where
    this_.LIO_ID=14528
    group by
    schemainst3_.SIM_DATEDEBUT



    Ce qui me pose problème c'est la partie en gras :


    left outer join
    COMPLEXE_CPX complexe7_
    on complexe7_.COM_COMMUNE_ID = communes11_.COM_ID OR composantc5_.CPX_COMPLEXE_ID = complexe7_.CPX_ID
    Comment, au moyen de Criteria, faire une jointure en utilisant le même alias (complexe7_) dans deux jointures réunies par un OR?

    J'espère que l'un de vous a déjà eu à résoudre ce problème et qu'il m'aidera à le résoudre.

    A bientôt.

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    dans l'api criteria tu peux spécifier les alias avec criteria.createAlias

    tu peux aussi indiquer la clause on avec la méthode createAlias(String associationPath, String alias, JoinType joinType, Criterion withClause).

    Pour la condition, cela ressemblera à quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    criteria.createAlias(
      associationPath, 
      alias, 
      jointype, 
      Restrictions.or(
         Restrictions.eqProperty(alias.com_commune_id, comm11_.com_id),
         Restrictions.eqProperty(c5.cpx_complexe_id, alias.cpx_id)
    )
    Bon courage en tout cas

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 98
    Par défaut
    Merci pour l'idée... malheureusement je ne dois pas avoir la même version que toi d'Hibernate.

    Je n'ai pas la signature

    createAlias(String associationPath, String alias, JoinType joinType, Criterion withClause).

    Dans l'api Criteria que j'ai, je n'ai pas la méthode avec le Criterion à passer en argument.

    ... Après relecture cette méthode est valable en 3.6.10

    Mais merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Update sur deux table relié par une clé étrangère.
    Par labib23dz dans le forum Développement
    Réponses: 5
    Dernier message: 18/04/2019, 11h40
  2. Deux entités reliées par une contrainte
    Par david lefaivre dans le forum Doctrine2
    Réponses: 2
    Dernier message: 02/11/2012, 19h05
  3. [Hibernate 3] [Criteria] Faire une jointure avec Criteria
    Par bouchette63 dans le forum Hibernate
    Réponses: 30
    Dernier message: 07/06/2010, 17h54
  4. Réponses: 2
    Dernier message: 26/11/2008, 09h43
  5. [MySQL] Faire une jointure entre deux tables qui ne sont pas dans la même base de données
    Par sandddy dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 03/04/2008, 14h18

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