Hibernate - Sessao finalizada ao dar Find

10 respostas
thiago.limma

Galera,

hoje passei a tarde toda com um problema. Quando vou dar um find, a minha sessao é finalizada e tenho o seguinte erro no Console.

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.gov.anac.sisrh.ferias.entidades.VigenciaFerias.listaSolicitacaoFerias, no session or session was closed )

Algum "Mister M " (risos) pode me dar uma ajuda?

Abraços

10 Respostas

Rafael_Nunes

Como você obtem essa session?
Por quê não valida se está aberta/válida antes de recuperá-la?

thiago.limma

O mais engraçado é que o erro só acontece quando essa lista está populada. Quando ela está vazia, funciona perfeitamente.

thiagocg

Como vc mapeou essa coleção?
Vc ta dando um get nela, ta buscando atraves de algum metodo, como esta pegando ela?

thiago.limma

Através de um método. Quando a lista está populada e vou debugando, dou um get na lista e tenho o seguinte erro:

com.sun.jdi.InvocationException occurred invoking method.

e no console aparece

org.hibernate.LazyInitializationException: illegal access to loading collection

thiago.limma

Teria como eu criar uma “Sessao eterna”?

thiagocg

Este erro provavelmente ocorre pq vc possui apenas um proxy apontando para a coleção, o objeto não a possui de fato, vc tem duas opções para pegar essa coleção, alterar o mapeamento do hibernate, colocando lazy=false (a forma de fazer isso vai depender de vc estar usando xml ou anotação), ou fazer uma busca direta no banco e não pegar ela com o get como vc disse q esta fazendo!

thiago.limma

thiagocg:
Este erro provavelmente ocorre pq vc possui apenas um proxy apontando para a coleção, o objeto não a possui de fato, vc tem duas opções para pegar essa coleção, alterar o mapeamento do hibernate, colocando lazy=false (a forma de fazer isso vai depender de vc estar usando xml ou anotação), ou fazer uma busca direta no banco e não pegar ela com o get como vc disse q esta fazendo!

O Grande problema é que a sessao morre qndo dou o find. Nao entendo o pq

thiago.limma

thiagocg:
Este erro provavelmente ocorre pq vc possui apenas um proxy apontando para a coleção, o objeto não a possui de fato, vc tem duas opções para pegar essa coleção, alterar o mapeamento do hibernate, colocando lazy=false (a forma de fazer isso vai depender de vc estar usando xml ou anotação), ou fazer uma busca direta no banco e não pegar ela com o get como vc disse q esta fazendo!

Neste link tem exatamente o que está acontecendo, mas a galera nao deu solução

http://www.guj.com.br/posts/list/51737.java

thiago.limma

thiagocg:
Este erro provavelmente ocorre pq vc possui apenas um proxy apontando para a coleção, o objeto não a possui de fato, vc tem duas opções para pegar essa coleção, alterar o mapeamento do hibernate, colocando lazy=false (a forma de fazer isso vai depender de vc estar usando xml ou anotação), ou fazer uma busca direta no banco e não pegar ela com o get como vc disse q esta fazendo!

Neste link tem exatamente o que está acontecendo, mas a galera nao deu solução

http://www.guj.com.br/posts/list/51737.java

thiago.limma

Ninguém?? :cry:

Criado 27 de novembro de 2008
Ultima resposta 1 de dez. de 2008
Respostas 10
Participantes 3