Boa tarde Galera,
Estou com problemas com o bendito LazyInitializationException, estava lendo no blog sobre o assunto: http://blog.caelum.com.br/enfrentando-a-lazyinitializationexception-no-hibernate/.
Estou usando o seguinte mapeamento:
//Classe PedidoCompra
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pedido", targetEntity = ItemPedidoCompra.class)
@Cascade(CascadeType.ALL)
@IndexColumn(name = "indice")
private List<ItemPedidoCompra> itens;
quando mudo o FetchType para EAGER ele funciona blz, porem quando para carregar uma grande quantidade de registro, totalmente inviável.
estou utilizando aplicação desktop, e nao estou conseguindo resolver esse problema, nao sei como fechar a sessao depois de carregar a lista.
//Classe PedidoCompraDao
public List<PedidoCompra> listaEmAberto(Empresa emp) throws Exception{
Session s = HibernateUtil.getSession();
try {
Criteria c = s.createCriteria(PedidoCompra.class);
c.add(Restrictions.eq("cancelado", "N"));
c.add(Restrictions.eq("liberado", "N"));
c.add(Restrictions.eq("emp", emp));
return c.list();
} catch (Exception e) {
throw e;
} finally{
s.close();
}
}
Sei que a Exception acontece quando fecha a sessão mais como abri-la fora do Dao, ou enfim como fazer a implementacao mais adequada.
Antecipo meus agradecimentos.