vsetkym velmi pekne dakujem, vyriesil som to moznostou 3.


Josef Cacek  wrote / napísal(a):
Ahojte,
budto mate spatne nakonfigurovany OpenSessionInViewFilter/Interceptor,
jak uz tu bylo napsano, nebo na dany objekt pristupujete v jinem
requestu, nez ve kterem byl nacteny (napr. ho mate ulozeny v http
session a zpracovavate ho ve vice requestech).

Reseni:
1) pouzit DTO namisto objektu vraceneho Hibernatem (tedy prekopirovani
potrebnych casti do noveho objektu)

2) pouzit dodatecnou model classu pro objekt A, kde by se vypnula Lazy
inicializace na mistech, kde je to potreba

3) pridat hned po nacteni objetku A neco takoveho:

for (B objB : objA.getObjektyB()) {
  org.hibernate.Hibernate.initialize(objB);
}

-- pepa cacek # http://javlog.cacek.cz/


2008/2/19 Ivan Polák <[EMAIL PROTECTED]>:
zdravim,

 pouzivam hibernate a v objekte A mam List objektov typu B:

 @OneToMany(mappedBy = "objektB", fetch = FetchType.LAZY, cascade =
 CascadeType.ALL)
    @JoinColumn(name = "fk_b_id")
    private List<B> objektyB;

 ako vidiet hore pouzivam Lazy loading, ked nacitam objekt A:

 A objektA = objektAManager.getA(id-cko);

 natahujem objekt pomocou funkcie:

 getHibernateTemplate().get

 teda je jasne ze List objektov premenna objektyB nie je nacitany.

 ako dosiahnem nacitanie "dotiahnutie" aj premennych typu List (pripadne
 inych collections) v objekte A.

 vypisuje to nasledovnu chybu:

 org.hibernate.LazyInitializationException: failed to lazily initialize a 
collection of role: 
com.freightservice.model.Shipper.shipperLicenceCertificateParameters, no 
session or session was closed


 dakujem

 Ivan



Odpovedet emailem