-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 22 posts ]  Go to page 1, 2  Next
Author Message
 Post subject: lazy exception
PostPosted: Thu Jun 30, 2005 4:29 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
salut


J'ai deux classes relation one-to-many.

departement 1-* ressource


pour departement, j'ai une liste de ressource, j'ai mis lazy= "true" dans mon fichier hbm.

J'ai une méthode qui me récupère l'ensemble des départements. Cette méthode me retourrne une liste de département.
Dans cette méthode j'ouvre une session puis je la ferme.


J' utilise la liste retourné pour afficher les données des départements.
Je voudrais pouvoir récupérer l'ensemble des ressource associés aux déparetements.

Le problème c que je suis hors session, donc je récupère une lazy exception lors du chargement des ressources.

Comment je peux faire pour ne plus avoir ce lazyException.

Merci par avance


Top
 Profile  
 
 Post subject: Re: lazy exception
PostPosted: Thu Jun 30, 2005 8:46 am 
Newbie

Joined: Wed Dec 15, 2004 10:23 am
Posts: 10
julientarrago wrote:

Comment je peux faire pour ne plus avoir ce lazyException.

Merci par avance


Faire tes deux étapes dans une meme session.

Jer.


Top
 Profile  
 
 Post subject: Re: lazy exception
PostPosted: Thu Jun 30, 2005 8:50 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
jer wrote:
julientarrago wrote:

Comment je peux faire pour ne plus avoir ce lazyException.

Merci par avance


Faire tes deux étapes dans une meme session.

Jer.




J'aimerais bien mais je peux pas. Car j'ouvre ma session dans ma fonction et je la referme à la fin de la fonction.

J'utilise cette fonction dans mon main et je ne veux pas avoir à écrire du hibernate dans mon main.


Top
 Profile  
 
 Post subject: Re: lazy exception
PostPosted: Thu Jun 30, 2005 10:27 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
julientarrago wrote:
jer wrote:
julientarrago wrote:

Comment je peux faire pour ne plus avoir ce lazyException.

Merci par avance


Faire tes deux étapes dans une meme session.

Jer.




J'aimerais bien mais je peux pas. Car j'ouvre ma session dans ma fonction et je la referme à la fin de la fonction.

J'utilise cette fonction dans mon main et je ne veux pas avoir à écrire du hibernate dans mon main.




je viens de trouver une fonction dans la doc : Hibernate.initialize(Object);

Est-ce qu'en utilisant cette fonction, je charge les objet ou pas?


Top
 Profile  
 
 Post subject: Re: lazy exception
PostPosted: Thu Jun 30, 2005 11:49 am 
Newbie

Joined: Wed Dec 15, 2004 10:23 am
Posts: 10
julientarrago wrote:
julientarrago wrote:
jer wrote:
julientarrago wrote:

Comment je peux faire pour ne plus avoir ce lazyException.

Merci par avance


Faire tes deux étapes dans une meme session.

Jer.




J'aimerais bien mais je peux pas. Car j'ouvre ma session dans ma fonction et je la referme à la fin de la fonction.

J'utilise cette fonction dans mon main et je ne veux pas avoir à écrire du hibernate dans mon main.




je viens de trouver une fonction dans la doc : Hibernate.initialize(Object);

Est-ce qu'en utilisant cette fonction, je charge les objet ou pas?


Pour info : http://www.hibernate.org/hib_docs/api/net/sf/hibernate/Hibernate.html#initialize(java.lang.Object)

Jer.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 30, 2005 1:15 pm 
Hibernate Team
Hibernate Team

Joined: Thu Dec 18, 2003 9:55 am
Posts: 1977
Location: France
utilise fetch dans une requete plutot que initialize, c'est plus propre

_________________
Anthony,
Get value thanks to your skills: http://www.redhat.com/certification


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jul 01, 2005 4:21 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
anthony wrote:
utilise fetch dans une requete plutot que initialize, c'est plus propre


voilà ce que je fais :

dans mon fichier hbiernate.cfg.xml:

<property name="hibernate.max_fetch_depth">1</property>

dans Département.hbm.xml:
<set name="Ressources" inverse="true" lazy="true" fetch="join">
<key column="DEPARTEMENT_ID" not-null="false" />
<one-to-many class="fr.icdc.dei.fwk.sample.dto.Ressource" />
</set>


dasn Ressource.hbm.xml :
<many-to-one name="Departement" class="fr.icdc.dei.fwk.sample.dto.Departement" fetch="join">
<column name="DEPARTEMENT_ID" not-null="true" />
</many-to-one>


ma fonction :
public Collection findAllDepartement() {

String query = "from Departement order by Libl";

Session sess = HibernateUtil.currentSession();

List list = sess.createQuery(query)
.list();

Iterator iter = list.iterator();
while(iter.hasNext()){
Departement D1 = (Departement) iter.next();
Iterator iter1 = D1.getRessources().iterator();
//Hibernate.initialize(iter1);

}
HibernateUtil.closeSession();

return list;
}



dans mon main :

DepartementDAOImpl DDD = new DepartementDAOImpl();

Collection departements = DDD.findAllDepartement();
Iterator iter = departements.iterator();
while(iter.hasNext()){
Departement D1 = (Departement) iter.next();
System.out.println(D1.getLibl());
System.out.println("taille des ressources : "+D1.getRessources().size());
Iterator iter1 = D1.getRessources().iterator();
while(iter1.hasNext()){
System.out.println(iter1.next());
//Ressource R = (Ressource) iter.next();
//System.out.println(R.getId());
}
}

dans le fichier de mapping :
J'ai donc rajouté fetch=join

Mais je suis obligé faire ceci:
while(iter.hasNext()){
Departement D1 = (Departement) iter.next();
Iterator iter1 = D1.getRessources().iterator();
//Hibernate.initialize(iter1);

}
sinon j'ai une lazyexception.


peut tu m'expliquer pourquoi?


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jul 01, 2005 4:31 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
dans la doc il y a ceci


Cependant, les associations un-à-plusieurs et les collections ne sont jamais chargées en utilisant une jonture
ouverte, à moins de le déclarer de façon explicite pour chaque association.


Donc apparement je suis obligé de parcourir ma collection.

Je pensais que le fetch permettait justement de préciser quelle profondeur d'arbre on voulait charger pour pouvoir manipuler les objets et donc ne plus recevoir une lazy Exception. Je suis donc obligé de parcourir ma collection.

Le plus "propre" comme tu dis c de ne pas mettre Hibernate.initialise(Object).



tu peux me confirmer ou me contredire merci.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 05, 2005 9:29 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
anthony wrote:
utilise fetch dans une requete plutot que initialize, c'est plus propre



Je n'arrive pas à comprendre comment fonctionne fetch pour les requêtes.

Comment s'utilise FETCH ?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 05, 2005 9:42 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
julientarrago wrote:
anthony wrote:
utilise fetch dans une requete plutot que initialize, c'est plus propre



Je n'arrive pas à comprendre comment fonctionne fetch pour les requêtes.

Comment s'utilise FETCH ?



je veux dire comment éviter la lazy exception?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 05, 2005 9:45 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
julientarrago wrote:
julientarrago wrote:
anthony wrote:
utilise fetch dans une requete plutot que initialize, c'est plus propre



Je n'arrive pas à comprendre comment fonctionne fetch pour les requêtes.

Comment s'utilise FETCH ?



je veux dire comment éviter la lazy exception?



Est-ce qu'il faut utiliser setFetchSize(int) ?


Pouvez vous m'expliquer.


merci


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 05, 2005 11:05 am 
Newbie

Joined: Tue Jul 05, 2005 9:48 am
Posts: 15
salut.. j ai la meme exception ke toi "Lazy Exception.."
et j voudrais savoir si t'arrives à accéder aux objets d'une collection contenue dans l'objet k t récupère???

En gros j ai une objet personne ke j recupère a partir d'hibernate.... qui contient une liste (HashSet) de fonctions (qui sont eux memes des objets)

ce ke j ve c pouvoir recupérer l'objet fonction avec toutes ses informations...

Si j'y accéde "get par get" ca fonctionne, mais si j ve récupérer directement l'objet complet ca me met l'exception "lazyInitialisationException etc.." ...

En gros g l impression ke les objets ne sont po totalement chargés...

Est ce k t pourrais m'éclairer la dessus.. merci...


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jul 05, 2005 11:11 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
naqncool wrote:
salut.. j ai la meme exception ke toi "Lazy Exception.."
et j voudrais savoir si t'arrives à accéder aux objets d'une collection contenue dans l'objet k t récupère???

En gros j ai une objet personne ke j recupère a partir d'hibernate.... qui contient une liste (HashSet) de fonctions (qui sont eux memes des objets)

ce ke j ve c pouvoir recupérer l'objet fonction avec toutes ses informations...

Si j'y accéde "get par get" ca fonctionne, mais si j ve récupérer directement l'objet complet ca me met l'exception "lazyInitialisationException etc.." ...

En gros g l impression ke les objets ne sont po totalement chargés...

Est ce k t pourrais m'éclairer la dessus.. merci...
*


voilà ce que j'ai fait et çà marche :


public Ressource findPersonneById(int pId) throws PersistenceServiceException {

Session sess = HibernateUtil.currentSession();

Ressource ressource = (Ressource) sess.get(Ressource.class, new Integer(pId));

if (ressource==null) {
System.out.println("Il n 'y a pas de ressource pour cet id : "+pId);
return null;
}
Set set = ressource.getProjets();
Hibernate.initialize(set);


HibernateUtil.closeSession();
return ressource;
}


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jul 06, 2005 3:39 am 
Newbie

Joined: Tue Jul 05, 2005 9:48 am
Posts: 15
t as version d'hibernate est la 2.0 ou 3.0.5?
Dans kel package se trouve le "PersistenceServiceException"?

Merci pour ta réponse malheureusement le code ne fonctionne po.. arf...


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jul 06, 2005 3:47 am 
Regular
Regular

Joined: Mon Apr 25, 2005 5:36 am
Posts: 103
naqncool wrote:
t as version d'hibernate est la 2.0 ou 3.0.5?
Dans kel package se trouve le "PersistenceServiceException"?

Merci pour ta réponse malheureusement le code ne fonctionne po.. arf...



J'utilise Hibernate 3.0
Ma fonction me renvoie une ressource. Chaque ressource contient une collection Projets. Pour ne plus avoir une lazy exception, je dois initialiser cette collection avant le closesession.

ma classe PersistenceServiceException se trouve dans un package que j'importe. Mais il s'agit d'un package à moi que j'ai crée. Si tu ne le mets pas c pas grâve.
voilà .


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 22 posts ]  Go to page 1, 2  Next

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.