Hibernate 3 e RMI

2 respostas
E

Olá.
Estou perdendo a cabeça com o LAZY do hibernate. Socoooorrroooo.
Bom, tenho um sistema cliente/servidor feito em java, onde a comunicação dá-se via RMI (Cliente: applet <-> Servidor: Java). Imagine uma Entidade pais com seus getters e setters e uma Set. Quando recupero esta entidade via hibernate e envio a mesma para a applet, a entidade passa por uma serialização e a referência do session do hibernate é perdida. Deste modo, como a Set está mapeada como LAZY, quando tento executar pais.getUFs() ocorre a seguinte exceção:

failed to lazily initialize a collection of role: br.com.ect.spec.entidade.bean.Pais.ufs - no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.ect.spec.entidade.bean.Pais.ufs - no session or session was closed

Alguém faz idéia de como eu posso resolver este problema? Pelo que pesquisei, tem uma solução utilizando-se de proxies, porém, não consegui encontrar nenhum exemplo.
Desde já, agradeço a todos.
Abraços,
Eduardo

2 Respostas

douglasfs

Bem nesse caso você precisa “forçar” o carregamento da coleção de UFs antes de enviar para o cliente, uma solução poderia ser :

Pais pais = carregarPaisDoSessionDoHibernate();
Hibernate.initialize(pais.getUFs())
return pais;
E

Obrigado pela ajuda amigo!
Porém, a situaçao com país é somente um exemplo. No caso real, seria como se tivesse um Objeto X contendo um Set com 10.000 objetos. Entendeu pq estou querendo utilizar o LAZY? Pois somente assim nao seria necessário carregar os 10.000 objetos em memória.
:frowning:

Abraçao,
Edu

Criado 9 de maio de 2006
Ultima resposta 9 de mai. de 2006
Respostas 2
Participantes 2