Ahoj,

souhlasím, že Hibernate.initialize() je dosti nebezpečné, pokud je result 
rozsáhlý. Nahraje totiž do paměti všechno, na co dosáhne, aby se mohla ukončit 
session a data se mohla předat třeba do webové vrstvy.

V řešeném případě ale možná nejde o chybu v "lazy property", jak uvádíte, ale o 
neinicializované objekty přímo v seznamu result. Alespoň to jsem předpokládal. 
Proto navrhuji Hibernate.initialize().

Vašek


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Behalf Of Arnošt Havelka
Sent: Friday, September 22, 2006 11:07 AM
To: Java
Subject: Re: hibernate - fetching strategies


Ahoj,

tohle mozna pomuze, ale je otazka, zda je to nezbytne nutne. Je treba si 
uvedomit, co se presne deje.

Pri zavreni session nedojde k zahozeni objektu, takhle chyba vznikne az 
ve chvili, kdy se z daneho objektu pokousite cist "lazy property" a 
session je jiz uzavrena.

Arny

Vaclav Pech napsal(a):
> Ahoj,
> 
> myslím, že by pomohlo před uzavřením session zavolat 
> Hibernate.initialize(result). Tím zajistíte, že Hibernate nahraje všechny 
> objekty do paměti.
> 
> Vašek
> 
> 
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Behalf Of Burdik Petr
> Sent: Friday, September 22, 2006 9:35 AM
> To: Java
> Subject: hibernate - fetching strategies
> 
> 
> Ahojda,
> mozna jsem se prehnlednul kdyz jsem se na to dival, ale mam problemek s
> proxy u hibernate.
> 
> text chyby:
> 2006-09-22 09:13:06,317 ERROR
> [org.hibernate.LazyInitializationException] - <could not initialize
> proxy - the owning Session was closed>
> org.hibernate.LazyInitializationException: could not initialize proxy -
> the owning Session was closed
> 
> Mam nasledujici kod na kterem tu chybu testuju:
>      public ArrayList getArticleSalesHistory( long oid ) {
>          ArrayList result = new ArrayList();
>          Session session = this.sessionFactory.openSession();
>          try {
>              ArrayList list = (ArrayList) session
>                 .createQuery("from PriceWTimestamp item where
> item.article.oid=?")
>                 .setParameter(0, new Long(oid))
>                 .list()
>              ;
>              if(list!=null) result = list;
>          } catch (Exception ex) {
>              logger.error(ex.getLocalizedMessage());
>          }
>          session.close();
>          return result;
>      }
> 
> Pak k tomu seznamu cen pristupuju a vznikne tento problem. Chapu asi o
> co jde. On pri session.close() ty objekty zahodi. Jak to tedy nastavit
> tak, aby mi vytvorene objekty nerusil? Jde o to ze se mi nechce
> prochazet znovu pole a delat klony, ktere by pak fungovaly jak maji.
> 
> Pet
> 
> 

Odpovedet emailem