Ummm… seu problema é mais simples…
A questão é que vc está fechando a session após consultar.
Porém, existe algum dado da lista que ainda não foi carregado…
Por exemplo:
Você tem uma lista de BeanGame, e cada BeanGame tem um BeanTeam.
Seu BeanTeam é lazy inicialization dentro do BeanGame.
Quanto você fizer algo como.
for (BeanGame b : list) {
int i = v.getBeanTeam().getPropriedade();
}
se o BeanTeam é lazy, no momento da chamada ele vai tentar ir no banco pra carregar os dados do BeanTeam.
Porém como sua sessão foi fechada
[/code]session.close();[/code]
ele não consegue carregar e estoura esta excessão.
Para resolver, ou você torna seu atributo EAGER (fetch=“join”, veja mais) ou você faz uma chamada ao atributo antes de fechar a sessão.
Ex.
public List<E> list() throws Exception{
SessionFactory factory = new Configuration().addClass(clazz).buildSessionFactory();
Session session = factory.openSession();
Query q = session.createQuery("from BeanGame bg");
List<BeanGame> list = (List<BeanGame>)q.list();
for (BeanGame b : list) {
b.getBeanTeam().getPropriedade();
}
session.flush();
session.close();
factory.close();
return list;
}
Dai ele vai ser carregado antes de fechar a sessão…
Até.