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 :

[HQL]Recherche sur relation n-m


Sujet :

Hibernate Java

  1. #1
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut [HQL]Recherche sur relation n-m
    Bonjour,

    j'ai un petit problème d'utilisation d'hibernate.

    J'ai 2 tables A et B, liées par une relation N-M (j'ai donc une troisième table dans le modèle physique de la db qui stocke les clés étrangères).

    Ce que j'aimerais faire, c'est récupérer tous les enregistrement de la table A qui ne sont pas liés à un enregistrement de la B (en sql ça donne un truc du genre "select * from A where not exists(select * from C where C.fkA=A.pk AND C.fkB=?)")

    Mais je ne sais pas trop comment récupérer ça en HQL...


    Une idée?


  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Personne n'a une idée?

    En fait le problème consiste surtout à faire des recherches sur une table qui n'est pas mappée par un bean (les tables contenant les clés des relations n-m sont mappées par des sets dans hibernate)


    Est-ce qu'une syntaxe du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from A where not A.setOfBs.contains(:B)
    pourrait fonctionner? (bon comme j'ai écris ça au pif c'est sûrement faux)

    Merci d'avance

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Le mieux c'est peut être de tester par toi même non?

    Sinon tu peux essayer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from A where :B not in setOfBs

  4. #4
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    oui, ça ne marche pas...

    ça génère une requête SQL qui se termine par ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... and (? not in  ({non-qualified-property-ref}))
    et donc plein d'exceptions...

Discussions similaires

  1. Recherche sur tous les fichiers d'un projet
    Par Kaorichan dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/04/2005, 11h28
  2. Recherche sur mots de 3 lettres
    Par mamizo dans le forum Bases de données
    Réponses: 7
    Dernier message: 16/02/2005, 14h59
  3. Réponses: 2
    Dernier message: 30/11/2004, 09h42
  4. Réponses: 8
    Dernier message: 10/09/2004, 17h30
  5. Recherche sur champ calculé
    Par srvremi dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/07/2004, 14h04

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