[RESOLVIDO] Hibernate + LazyInitializer = Help!

4 respostas
sonictk

Sei que ja tem um monte de topicos sobre esse assunto, mas não consegui achar um que solucionasse meu problema, não da forma que se encaxaria no meu projeto.

[color=red]Caused by: org.hibernate.LazyInitializationException: could not initialize proxy - no Session[/color]

Isso acontece quando tento acessar um objeto dentro do outro. Por exemplo tento acessar Aluno dentro de Matricula, tá, acho que o Hibernate faz o get do objeto na hora do acesso e como a sessão está fechada e por isso da o erro.

Estou usando mapeamento XML HBM, nele não aceita o FetchType.EAGER e não queria realizar uma outra consulta para preencher os objetos na Matricula.

Vi tambem que tem um tal de Hibernate.initialize(matricula); mas não entendi isso …

Como devo fazer ?

4 Respostas

Hebert_Coelho

Utiliza HQL.

Aí voce coloca select m from Matricula m join fetch m.aluno

OBS.: Não aceita eager? tem coisa errada aí não?

sonictk

jakefrog:
Utiliza HQL.

Aí voce coloca select m from Matricula m join fetch m.aluno

OBS.: Não aceita eager? tem coisa errada aí não?

Tinha visto essa ideia de carregar tudo na HQL , mas não queria assim.
eager para o xml não aceita,

Antes não tava funcionando. Agora estou fazendo

[list]Abrindo a conexão, executo as HQLs e fecha a conexão.[/list]
[list] no XML HBM para os objetos mapeados coloco ex: [/list]

<many-to-one class="Aluno" name="aluno" fetch="join" lazy="false"> <column name="aluno" not-null="true" /> </many-to-one>

[color=green]Assim resolveu o problema[/color]. Não sei se é o mais correto. Mas ta funcionando.
Talvez o lazy=“false” vá atrapalhar na performance, pois carrega o objejeto todo.

Hebert_Coelho

lazy=“false” = “EAGER”
:lol: :lol: :lol: :lol: :lol:

sonictk

jakefrog:
lazy=“false” = “EAGER”
:lol: :lol: :lol: :lol: :lol:

Isso não achei falando! heheheh

Criado 6 de março de 2012
Ultima resposta 6 de mar. de 2012
Respostas 4
Participantes 2