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 :

[Hibernate]Problème de requete avec "join fetch"


Sujet :

Hibernate Java

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Hibernate]Problème de requete avec "join fetch"
    Bonjour,
    j'ai besoin de récupérer deux objets situées dans une classe et qui sont en mode lazy="true" et pour cela j'effectue un "join fetch" dans ma requete comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select classe from Classe as classe 
    left join fetch classe.objet1 
    left join fetch classe.objet2 
    where .....
    mais lorsque j'essaie d'utiliser mes objets objet1 ou objet2 dans mon code j'obtiens une "LazyInitializationException"

    par contre si je met le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select classe from Classe as classe 
    left join fetch classe.objet1 
    where .....
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select classe from Classe as classe 
    left join fetch classe.objet2 
    where .....
    j'arrive bien à accéder à mon objet1 dans le premier cas et à mon objet2 dans le second cas ...

    Comment faire pour pouvoir récupérer mes deux objets en même temps ??

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 143
    Points
    143
    Par défaut Criteria
    Tu peux faire facilment une requête criteria comme ceci, qui récupérera ta jointure :

    listTel = s.createCriteria(Telephone.class).setFetchMode("personnes",FetchMode.JOIN).list();

    "personnes" est le nom de l'attribut dans la classe Telephone, tu peux mettre aussi la nom de ta classe directement, Hibernate se charge de la trouver...

  3. #3
    zev
    zev est déconnecté
    Membre actif
    Inscrit en
    Octobre 2004
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 204
    Points : 220
    Points
    220
    Par défaut
    J'ai eu le m pb (non résolu)
    En cherchant j'ai cru comprendre qu'il y avait un bug qui empéchait les double jointure
    Mais je suis pas sûr de tout ça

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 143
    Points
    143
    Par défaut
    Les "doubles jointures" => C'est à dire ?
    D'une table vers deux :

    /----- X
    X-----
    \____ X

    Ou :

    X ----- X ---- X

    ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Points : 143
    Points
    143
    Par défaut
    J'ai relu ! Apparemment, c'est le deuxième cas qui te concerne ici !
    Avec une criterai, ça marche, j'l'ai fait !

    Tu rajoutes deux fetchMode à la suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    c = (CasTest) s.createCriteria(CasTest.class).                                                                            add(Restrictions.idEq(id)).                                                                               setFetchMode("ensParamValue", FetchMode.JOIN).                                                                               setFetchMode("op", FetchMode.JOIN).                                                                              setFetchMode("env", FetchMode.JOIN).
    setFetchMode("dist", FetchMode.JOIN).
    uniqueResult();
    ( Merci à Bebert )

Discussions similaires

  1. Problème de requete avec type monétaire
    Par Pymm dans le forum ASP
    Réponses: 11
    Dernier message: 09/09/2005, 16h57
  2. [Hibernate]Probleme de requete avec un "or"[\Hiber
    Par crips dans le forum Hibernate
    Réponses: 5
    Dernier message: 07/07/2005, 03h28
  3. requete avec left join et group by
    Par slc dans le forum Requêtes
    Réponses: 2
    Dernier message: 14/09/2004, 18h03
  4. Problème de requete avec Innodb
    Par silef dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/04/2004, 12h54

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