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 > >
