Org.hibernate.LazyInitializationException mas minha sessão ta viva ainda [RESOLVIDO]

Fala pessoal,

Estou tendo um problema de LazyInitializationException,[color=red] org.hibernate.LazyInitializationException: failed to lazily initialize a collection - no session or session was closed.[/color]

Pesquisando na internet achei a causa do problema no link da Caelum http://blog.caelum.com.br/enfrentando-a-lazyinitializationexception-no-hibernate/

Meu problema é igual na questão das consultas serem LAZY, porém a situação é um pouco diferente, o erro é gerado antes de chegar no JSP.

Abaixo segue o trecho de código onde é gerado o erro.

banda = (Banda)ServletActionContext.getContext().getSession().get("banda");
musicas = MusicaDAO.getByBanda( banda );

Iterator<Musica> itMusicas = musicas.iterator();

while(itMusicas.hasNext()){
   Musica musicaAtual = itMusicas.next();
   Iterator<Usuario> itUsuarios = musicaAtual.getUsuariosRelacionados().iterator();

...

Iterator itUsuarios = musicaAtual.getUsuariosRelacionados().iterator();

O erro é gerado na linha em destaque justamente quando uso o método getUsuariosRelacionados(), pois meu relacinamento esta como LAZY.

Mas minha questão é: Minha sessão morreu? Não consigo entender pq ele reage como se a sessao não existisse mais…

Como faço pra que o LAZY nesta situação funcione da maneira q deveria funcionar? Se eu mudo pra LAZY=“FALSE” funciona perfeitamente, porém fica muito muito lento…

Obrigado.

abcs

Pelo visto sim, morreu.

Aqui tem 4 soluções para o problema: Quatro soluções para LazyInitializationException.

Show Hebert, segui a solução do JOIN do teu blog funcionou bem. http://uaihebert.com/?p=1367&page=7

No meu caso, só precisei mudar meu XML com fecth=“JOIN” e funcionou de boa e mais rápido.

vlw
abcs