Problemas com session.close() no hibernate

Estou com problema quando fecho minha sessao no hibernate, faco uma criteria e coloco o resultado em um List e em um ListIterator para uma utilizacao posterior em meu jsp com um iterator, mas quando a classe q utilizo na criteria tem um campo Set q eh um mapemaneto q tenho entre as tabelas, meu jsp nao eh exibido, ja dei um debug no jsp e vi que o problema acontece quando passa pelo meu iterator. E se eu nao execute session.close() funciona perfeitamente.

vou postar uma parte do codigo:

metodo q chamo a criteria

   public boolean getAllRecords(Class classToOpen, String order) {
        
        Session ses = Persister.getInstance().getNewSession();

        try {
            Criteria crit = ses.createCriteria(classToOpen);
            crit.addOrder(Order.asc(order));

            listDados = crit.list(); 
            it = listDados.listIterator();
            
            return true;
        } catch (HibernateException he) {
            he.printStackTrace();
            return false;
        } finally {
            ses.close();  //se tiro esta linha funciona perfeito
        }
    }
quando utilizo a criteria

        if ( pesquisa.getAllRecords(DaoContaCaixaWeb.class, "descricao") ) {

            session.setAttribute(Constants.LIST_CONTACAIXA, pesquisa.getListDados());
           
            DaoContaCaixaWeb returnedContaCaixa = (DaoContaCaixaWeb) pesquisa.getListIterator().next();
            session.setAttribute(Constants.LIST_SUBCONTA, returnedContaCaixa.getSubContas()); //o getSubContas retorna um Set com as subcontas da contacaixaweb
        }
jsp

                logic:present name="listsubconta" scope="session"
                    html:select styleClass="input01" property="cod_subconta"
                        html:options collection="listsubconta" labelProperty="descricao" property="controle"/
                    /html:select
                /logic:present

Vc deve estar com problemas de lazy loading, então ou usa uma estrategia para controlar o ciclo de vida das sessions que esteja ligada ao inicio e fim da requisição, ou faz os relacionamentos serem trazidos todos de uma vez.

Dá uma olhada em coisas como OpenSessionInView, ThreadLocalSession.

valeuz…