Kolegovia,
začínam s Hibernate
a mám problém samozrejme s LazyInitializationException. Mám v
Springu potomka HibernateDaoSupport, kde mám DAO metódu, ktorá vracia List.
Nejako takto:
...
HibernateTemplate template =
getHibernateTemplate();
List list = template.find("from EngineStationTO");
List list = template.find("from EngineStationTO");
...
Ten
EngineStationTO obsahuje aj nejaké asociácie, ktoré sa pri
default nastavení lazy select
fetching samozrejme
nenačítajú. Sranda je však tá, že samotná metóda find() zatvára
session a teda nemám možnosť dotiahnuť tie asociácie žiadnym spôsobom (napr.
Hibernate.initialize(list) ) takže vždy dostanem LazyInitializationException.
Pozeral som sa, ako
to rieši napr. Springový web filter OpenSessionInViewFilter.
Ten na začiatku requestu použije:
session =
getSession(sessionFactory);
TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(session));
TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(session));
a na
konci:
TransactionSynchronizationManager.unbindResource(sessionFactory);
ale mimo web
aplikácie? Zdá sa mi, že by to mohlo ísť aj jednoduchšie. Samozrejme, môžem
zakázať lazy inicializáciu, alebo nakonfigurovať objekty bez asociácií, ale to
by bola škoda.
Rastislav "Bedo"
Siekel.
Ing. Rastislav Siekel
Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia
E-mail : <[EMAIL PROTECTED]>
Tel : 041/562 54 91
Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia
E-mail : <[EMAIL PROTECTED]>
Tel : 041/562 54 91
Fax : 041/562 54
97
Mobil : 0905 34 00 20
Mobil : 0905 34 00 20
