LazyInitializationException: could not initialize proxy - no Session

7 respostas
H

Pois é pessoal. É o erro mais comum nas aplicações web.
Já tentei de tudo, coloquei Spring, Listener, OpenEntityManagerInViewFilter e mais um monte.
Revirei o google, vários outros fóruns e ninguém posta uma solução clara, objetiva e definitiva para o problema.

Tenho um projeto grande e quando notei esse erro, percebi pela modelagem do Banco de Dados que esse erro poderá acontecer em grande parte do meu sistema.
Não sei mais o que posso fazer pra solucionar isso.
Já sei que o problema é devido a conexão com o banco ser fechada antes de atribuir os valores ao meu objeto (coisa do Hibernate e JPA), porém, não posso colocar os atributos da minha classe como EAGER, devido ao consumo de memória.

A aplicação baseia-se em RichFaces, Ajax e Hibernate com JPA. Ouvi falar que o OpenEntityManagerInViewFilter não funciona para requisições Ajax, ou seja, talvez a causa do problema esteja aí, mas não creio que todos os desenvolvedores do mundo vão ter de deixar de usar Ajax por causa de um erro desses.

Acontece que eu tenho um objeto Departamento que possui vários Projetos. Quando tento alterar um objeto Projeto ocorre o erro de “No Session”.

No meu bean Projeto tenho o seguinte:

@JoinColumn(name = "fk_departamento", referencedColumnName = "id_departamento", nullable = false) @ManyToOne(optional = false, fetch = FetchType.LAZY) private DepartamentoBean fkDepartamento;

E no meu bean Departamento:

@OneToMany(mappedBy = "fkDepartamento", fetch = FetchType.LAZY) private List<ProjetoBean> projetos;

Se alguém conseguiu solucionar esse problema, ficarei grato por qualquer ajuda.
:wink:

7 Respostas

altitdb

Esses dias estava com um problema parecido, apenas troquei de LAZY para EAGER!

xD~~

H

altitdb:
Esses dias estava com um problema parecido, apenas troquei de LAZY para EAGER!

xD~~

Então cara, o problema é que como disse acima, esse é um dos relacionamentos mais simples que tenho no meu sistema.
Ainda tem ManyToMany, OneToMany, ManyToOne no mesmo bean e outros beans que se relacionam entre si, etc.

Se eu seto tudo pra EAGER, quando muitos usuários acessarem meu sistema, vai parar tudo.

altitdb

Isso é verdade, futuramente os problemas irão aparecer…

Esses dias vi um post falando deste erro no site da Caelum…

Dá uma olhada lá!

Talvez te ajude!!

xD~~

H

Valew “altitdb”.
Já tinha visto esse tópico lá. Inclusive implementei o OpenEntityManagerInViewFilter que é sugerido mas ainda assim sem sucesso.
Quando preciso utilizar uma informação da minha lista na interface web, o erro continua acontecendo.

Tirando as outras telas, tenho uma de cadastro, exclusão e alteração. Essa tela lista todos os projetos que eu tenho. EU consigo cadastrar um novo sem problemas, mas na hora de alterar alguma informação ou excluir, acontece o LazyInitializationException.

Já chego a pensar que se eu fizesse os DAOS na mão seria mais vantajoso do que usar Hibernate, visto que não consigo solucionar esse problema de forma alguma. :cry:

pablouu

Eu estava com o mesmo problema, e ele continuou mesmo depois de implementar o OpenEntityManagerInViewFilter , soulucionei depois de usar o filtro do spring:

&lt;filter&gt;
    &lt;filter-name&gt;openEntityManager&lt;/filter-name&gt;
    &lt;filter-class&gt;org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter&lt;/filter-class&gt;
&lt;/filter&gt;
	
&lt;filter-mapping&gt;
   &lt;filter-name&gt;openEntityManager&lt;/filter-name&gt;
   &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
 &lt;/filter-mapping&gt;
H

Pabloou, já adicionei esse filter no meu web.xml também. E toda requisição é passada por ele, porém o erro persiste. Só se estiver uma coisa muito errada acontecendo.

O que me parece é que o filtro não funciona quando faço requisições Ajax

pablouu

Po cara sem dúvida o ciclo de vida do jsf com ajax é outro, se souber de algum material que o explica me envia por favor.

Criado 6 de dezembro de 2010
Ultima resposta 7 de dez. de 2010
Respostas 7
Participantes 3