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

NHibernate Discussion :

Nhibernate, Left join, with clause


Sujet :

NHibernate

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Nhibernate, Left join, with clause
    Bonjour tout le monde,

    je suis actuellement sur un problème de requête sous Nhibernate
    (ma version de dll date de début aout... plutot récent)

    La requête de base est lente, et travaillant la requête sous commande SQL, j'arrive à l'optimiser
    problème, je n'arrive pas à transposer cette optimisation en C# avec nhibernate

    comment ça se passe :

    Exemple de mon modèle

    TABLE_A { A_Identifiant, A_Libelle, A_Relation_B_ident}
    TABLE_B { B_Identifiant, B_Libelle}

    Actuellement, lorsque les requêtes sont créées, elles sont mises en place de la manière suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select A_Libelle, B_Libelle from TABLE_A
        left join TABLE_B;
    nhibernate passe par là en interprétant les xml du modele, en considérant le champ A_Relation_B_ident comme une entité et non comme un champ et on obtient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select A_Libelle, B_Libelle from TABLE_A
        left outer join TABLE_B on TABLE_A.A_Relation_B_ident = TABLE_B.B_Identifiant;
    problème, c'est qu'avec ce genre de truc, on a des full access sur les tables

    une des optimisations, consistes à ajouter un truc tout simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select A_Libelle, B_Libelle from TABLE_A
        left outer join TABLE_B
        on TABLE_A.A_Relation_B_ident = TABLE_B.B_Identifiant
        AND TABLE_A.A_Relation_B_ident is not null;
    ça évite le full access de suite sur table_B.
    Problème, en hibernate, il n'aime pas du tout, vu que pour lui, le champ A_Relation_B_ident est une entité, et non un String ou autre...

    Au moment de l'execution du code, j'ai le message suivant :

    Erreur dans la récupération des demandes pour la Recherche: with-clause expressions did not reference from-clause element to which the with-clause was associated

    D'avance, je vous dis un grand merci !( déjà pour lire ce post...)

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Select A_Libelle, B_Libelle from TABLE_A
    left outer join TABLE_B
    on TABLE_A.A_Relation_B_ident = TABLE_B.B_Identifiant
    AND TABLE_A.A_Relation_B_ident is not null;
    Cela revient à faire un INNER JOIN?
    Le problème ne vient'il pas simplement du fait que A_Relation_B_ident est inutilement NULLABLE dans votre table?

    je rappel que les VIEW SQL sont là pour masquer la complexité d'un modèle...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

Discussions similaires

  1. [MySQL] left join et clause where
    Par jeanmichel.lovichi dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 18/10/2013, 14h57
  2. [AC-2007] Equivalent Left Join dans Clause Where
    Par kornetmuse dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/03/2013, 16h31
  3. LEFT JOIN AVEC CLAUSE WHERE
    Par przvl dans le forum Requêtes
    Réponses: 2
    Dernier message: 23/03/2012, 10h14
  4. Une clause WHERE avant un LEFT JOIN ?
    Par bugalood dans le forum Langage SQL
    Réponses: 11
    Dernier message: 27/07/2005, 14h22

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