Consulta classe com relacionamento OneToMany

3 respostas
R

Pessoal,

tenho duas classes: Conhecimento e Auditoria.
A classe Conhecimento possui uma coleção de Auditoria.

Ao efetuar a consulta do Conhecimento, não está carregando a coleção. Dessa forma, ao tentar adicionar um novo objeto na coleção, ocorre o erro:

failed to lazily initialize a collection of role: dao.Conhecimento.colAuditoria, no session or session was closed

A consulta:

this.sessao = HibernateUtil.getSessionFactory().getCurrentSession();
this.transacao = this.sessao.beginTransaction();
		
String stmt = "from Conhecimento c "+
                " where c.oid = ? ";
			
Query consulta = sessao.createQuery(stmt);
consulta.setParameter(0, oid);
conhecimento = (Conhecimento) consulta.uniqueResult();
			
this.transacao.commit();

Podem me ajudar?

Obrigado

3 Respostas

rock

Boa noite rvoltz,

para vc resolver isso e nao ter outros problemas relacionados, sugiro estudar um pouco sobre ‘Lazy Initialization’ e ficar atento ao conceito quando alguma exception semelhante ao que vc citou ocorrer.

Resumindo, a coleção de Auditoria é consultada/carregada somente quando utilizada. Se você fechou a sessão do hibernate em que o Conhecimento foi consultado e depois tentar utilzar a colecao Auditoria, ocorrerá a exception.

No seu caso podes utilizar uma consulta com JOIN FETCH (que forçará carregar a coleção de Auditoria na consulta do Conhecimeto) ou tentar manipular a coleção de Auditoria antes de fechar a sessão do hibernate.

Pegou?

R

Show de bola.

Obrigado.

Kanin_Dragon

Jovem,

Caso queira se aprofundar mais sobre o assunto leia a documentação do Hibernate http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html

abs,

Criado 10 de maio de 2011
Ultima resposta 10 de mai. de 2011
Respostas 3
Participantes 3