Problemas com session.close() no hibernate

1 resposta
V

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

1 Resposta

J

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…

Criado 12 de julho de 2005
Ultima resposta 12 de jul. de 2005
Respostas 1
Participantes 2