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 :

Requete HQL avec "all"


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Par défaut Requete HQL avec "all"
    Bonjour à tous,

    Je souhaite effectuer une requête en HQL avec un "all" dans la clause where mais je ne trouve pas la syntaxe adéquate...

    Prenons les classes persistantes A et B suivantes :

    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
    A {
    Integer id;
    Set<B> b;
     
    etc...
    }
     
     
    et B {
    Integer id;
    A a;
    String toto;
     
    etc...
    }
    La requête que je souhaite exécuter en HQL est de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select a
    From A as a
    Where (:uneCollection) = all (A.b.toto)
    Je souhaite rechercher les objets A tels que je puisse retrouver dans les propriétés des objets B associés l'ensemble des paramètres de ma collection.

    Pour donner un exemple concret je sélectionne dans un select html multiples les propriétés que je recherche. Le résultat doit renvoyer les objets auxquels sont associées l'ensemble des propriétés sélectionnées.

  2. #2
    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 un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Select a
    From A as a inner join a.b as b
    Where b.toto in (:uneCollection)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Et un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Select a
    From A as a inner join a.b as b
    Where b.toto in (:uneCollection)
    Avec cette requête il suffit que A possède un élément B dont toto est dans la collection pour que A soit retourné ce n'est pas le résultat que je souhaite. Je souhaite que A soit retourné si et seulement si l'ensemble des éléments de la collection se retrouvent dans la propriété toto des objets B associés à A.

    Un exemple : si je sélectionne "1", "2" et "3" dans ma liste.
    La requête se fait avec comme collection {"1","2","3"}.

    Je veux que seuls les objets A auxquels sont associés les 3 objets B.toto=1, B.toto=2 et B.toto=3 soient retournés. La requête que tu me proposes n'exclue pas un objet A qui ne serait lié qu'à un objet B pour lequel toto=1 et qui ne serait lié à aucun objet B dont toto = 2 et toto = 3

    J'espère être clair

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Par défaut
    Je n'ai toujours pas résolu mon problème et je vais essayer une autre piste en parallèle : avec Criteria en travaillant directement sur les objets mais je maîtrise moins cette technique. Toute idée est la bienvenue!

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Par défaut
    J'ai construit l'équivalement de ma requête HQL à l'aide de Criteria mais je n'arrive toujours pas à exprimer ma contrainte, je ne trouve pas le moyen de la formuler avec hibernate.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 7
    Par défaut
    Citation Envoyé par Befa21 Voir le message
    J'ai construit l'équivalement de ma requête HQL à l'aide de Criteria mais je n'arrive toujours pas à exprimer ma contrainte, je ne trouve pas le moyen de la formuler avec hibernate.
    Je bute toujours sur ce problème, et je vais bientôt avoir besoin de formuler de nouveau le même type de requête. J'ai beau éplucher la documentation et des forums je ne trouve pas de solution.

    Si quelqu'un a un éclair de génie...

Discussions similaires

  1. Requete paramétrée avec des singles quotes ?
    Par Mirmillon dans le forum Bases de données
    Réponses: 5
    Dernier message: 03/12/2010, 11h34
  2. Requete HQL avec jointure
    Par chriscoolletoubibe dans le forum Hibernate
    Réponses: 50
    Dernier message: 24/04/2007, 15h54

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