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 :

Besoin d'aide - Récupérer objet et ses collections


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    ingénieur
    Inscrit en
    Octobre 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Octobre 2004
    Messages : 58
    Par défaut Besoin d'aide - Récupérer objet et ses collections
    bonjour

    je debute sur hibernate

    j'essaie de faire qqchose d'assez simple,
    j'ai un objet qui contient une liste, et chaque objet de cette liste contient egalement une liste.

    vous l'aurez compris, je veux en 1 requete recuperer tout ce petit monde,

    mon 1er objet est Telepat qui a pour attribut :
    private Set<TFshtmat> tFshtmatCollection;

    et chaque objet TFshtmat a pour attribut
    private Set<TNbveh> tNbvehCollection;

    donc je veux recuperer un objet Telepat qui contient tout

    voici mon code actuelement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Criteria c = createCriteria(TElepat.class);
    c.add(Restrictions.eq("elepatId", elepatId));
    c.setFetchMode("tFshtmatCollection", FetchMode.JOIN);
    c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    c.createCriteria("tFshtmatCollection")
    .setFetchMode("tNbvehCollection", FetchMode.JOIN)
    .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
     
    TElepat res = (TElepat) c.uniqueResult();
    ceci ne plante pas, mais dans mon action avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    element.getTFshtmatCollection()
    ou element est mon objet Telepat ainsi recuperé j'ai cette belle exception :

    GRAVE: "Servlet.service()" pour la servlet action a généré une exception
    org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: fr.xxxx.xxxxx.entity.TElepat.tFshtmatCollecti
    on, no session or session was closed
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:3
    50)
    at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343)
    at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
    at org.hibe

    une aide me serait bien precieuse, merci

  2. #2
    Membre averti
    Profil pro
    ingénieur
    Inscrit en
    Octobre 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Octobre 2004
    Messages : 58
    Par défaut
    bon ba voici la reponse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Criteria c = createCriteria(TElepat.class);
    			c.add(Restrictions.eq("elepatId", elepatId));
    			c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    			c.createCriteria("tFshtmatCollection", Criteria.LEFT_JOIN)
    		    .setFetchMode("tNbvehCollection", FetchMode.JOIN)
    		    .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    			TElepat res = (TElepat) c.uniqueResult();

  3. #3
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Tu as une autre possibilité que celle de modifier ta requête ; tant que ta session reste ouverte, tu peux accéder aux collections et hibernate ira gentiment les remplir pour toi (il est sympa cet hibernate). De simples .size font l'affaire.
    Ce qui peut permettre d'avoir une stratégie globalement lazy, de ne pas redéfinir des modes de chargement, mais quand on en a besoin de créer une méthode java qui fait le petit chargement supplémentaire. Just my 2 cents.

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/05/2008, 18h07
  2. Besoin d'aide avec une requete pour récupérer des hyperliens
    Par scaleo dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 21/12/2007, 12h56
  3. [MySQL] besoin d'aide pour exécuter une requête et en récupérer le résultat
    Par fast462 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 28/05/2007, 10h30
  4. [POO] Classe et objet: besoin d'aide
    Par Touareg dans le forum Langage
    Réponses: 4
    Dernier message: 27/02/2007, 17h04

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