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 requete HQL avec clause where in [HQL]


Sujet :

Hibernate Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 33
    Points : 25
    Points
    25
    Par défaut probléme requete HQL avec clause where in
    bonjour
    je veux récupérer les exigences créées par un utilisateur qui appartient à un service donné, donc j'ai ma classe Exigence qui a un attribut de type Utilisateur, et dans Utilisateur j'ai un attribut de type Service, j'ai testé la requête suivante mais cela me retourne une liste vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    List<Exigence> findbyStateAndService(ma.tgr.gestionExigences.parametrage.model.Service service) {
    		List<Exigence> list = sessionFactory.getCurrentSession().createQuery("from Exigence exigence where exigence.utilisateur in (from Utilisateur utilisateur where utilisateur.service = '"+service+"')").list();
    		System.out.println("teeeest"+list.toString());
    		return sessionFactory.getCurrentSession().createQuery("from Exigence as exigence where exigence.utilisateurByIdutilisateurrecetteur in (from Utilisateur utilisateur where utilisateur.service.codeservice = '"+service+"') ").list();
    	}
    ça me bloque et je sais pas où est l'erreur :s

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    déjà, la ligne de debug et le retour de ta fonction utilisent des requetes différentes.

    Ensuite, est-ce que tout est bien sous forme de relation 1-1 ou est-ce qu'il y a des relation 1 to many dans ta requete? (est-ce que Exigence.utilisateur et Utilisateur.service sont bien des valeur unique et non des collections)

    Pour la requete de debug: Service étant un objet, tu ne peux pas le comparer à un String (quoi que, en fait hibernate va comparer l'id avec le String)

    Dans la même lignée, la paramètre Service de ta méthode est un Objet, pas un String, tu ne peux pas le concaténer comme ça à ta requete.

    Pour les deux requete: paramétriser les requetes pour éviter les soucis. Enfin, si comme je l'ai compris, utilisateurByIdutilisateurrecetteur.service est une valeur simple, la query devrait être:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sessionFactory.getCurrentSession()
        .createQuery("from Exigence as exigence where exigence.utilisateurByIdutilisateurrecetteur.service = :service")
        .setParameter("service",service)
        .list();
    	}

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 33
    Points : 25
    Points
    25
    Par défaut
    merci pour votre réponse ,effectivement j'avais une erreur au niveau de la requête il fallait écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<Exigence> list = sessionFactory.getCurrentSession().createQuery("from Exigence exg where exg.utilisateurByIdutilisateurcreateur in (from Utilisateur user where user.service.codeservice = '"+service.getCodeservice()+"')").list();

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    pren l'habitude de paramétriser tes requêtes. Ca évite les surprises et ça permet de rendre la lecture plus aisée.

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

Discussions similaires

  1. [Toutes versions] Requete Select avec Clause WHERE par ODBC
    Par kernel57 dans le forum Access
    Réponses: 2
    Dernier message: 16/07/2014, 17h07
  2. [XQUERY] Problème sum éléments avec clause where
    Par OLman135 dans le forum XQUERY/SGBD
    Réponses: 2
    Dernier message: 21/05/2012, 11h17
  3. Requete avec clause where dynamique
    Par shyangel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/05/2011, 13h10
  4. Pb de requete SQL avec clauses WHERE dans une procédure stockée
    Par CocoLeNain dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/06/2010, 23h48
  5. Petit souci avec clause where
    Par ybruant dans le forum SQL
    Réponses: 1
    Dernier message: 21/07/2005, 22h10

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