Problemas em limpar ou fechar a session

0 respostas
Kleber-rr

Olá pessoal, bom dia.

Estou com problemas em limpar a sessão ou fechá-la.

Por exemplo, em um método:
public List<Unidade> getListaUnidades() {
		Session session = HibernateUtil.currentSession();
		UnidadeDao unidadeDao = new UnidadeDao(session, Unidade.class);

		return unidadeDao.list();
	}

	public List<Unidade> getUnidadesByNome() {
		Session session = HibernateUtil.currentSession();
		UnidadeDao unidadeDao = new UnidadeDao(session, Unidade.class);
		List<Unidade> lista = unidadeDao.pesquisaUnidades(this.unidade
				.getNome());

		return lista;
	}
Ao clicar lá na minha jsp de pesquisa e realizar esta busca, ela me retorna a lista com o resultado... tranquilo... Mas se eu continuar navegando e voltar para a minha tela de busca novamente, os campos aparecem preenchidos e o resultado exibido... Me corrijam caso eu esteja enganado... mas isso acontece pelo fato dos dados estarem na session, correto?? Tentei fechar a sessão dessa forma:
public List<Unidade> getListaUnidades() {
		Session session = null;

		try {
			session = HibernateUtil.openSession();
			UnidadeDao unidadeDao = new UnidadeDao(session, Unidade.class);

			return unidadeDao.list();
		} catch (Exception ex) {
		}

		finally {

			session.close();
		}
		return null;
	}

	public List<Unidade> getUnidadesByNome() {
		Session session = null;
		try {
			session = HibernateUtil.openSession();
			UnidadeDao unidadeDao = new UnidadeDao(session, Unidade.class);
			List<Unidade> lista = unidadeDao.pesquisaUnidades(this.unidade
					.getNome());

			return lista;
		} catch (Exception ex) {
		}

		finally {

			session.close();
		}
		return null;
	}
E não adiantou nada... Tentei somente fechar a sessão antes do resultado da List, ou até mesmo limpá-la, mas pelo que entendi, se eu faço isso, eu estou impedindo do hibernate me exibir os resultados pesquisados na session:
public List<Unidade> getListaUnidades() {
		Session session = HibernateUtil.openSession();
		UnidadeDao unidadeDao = new UnidadeDao(session, Unidade.class);
		session.close();
		return unidadeDao.list();
	}

	public List<Unidade> getUnidadesByNome() {
		Session session = HibernateUtil.openSession();
		UnidadeDao unidadeDao = new UnidadeDao(session, Unidade.class);
		List<Unidade> lista = unidadeDao.pesquisaUnidades(this.unidade
				.getNome());
		session.close();
		return lista;
	}
Dando esse erro:
org.hibernate.SessionException: Session was already closed
	org.hibernate.impl.SessionImpl.close(SessionImpl.java:275)
	br.gov.rr.setrabes.util.HibernateUtil.closeCurrentSession(HibernateUtil.java:38)
	br.gov.rr.setrabes.util.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:26)

Eae pessoal, o que posso fazer pra resolver isso??
Agradeço a ajuda.

Criado 6 de agosto de 2010
Respostas 0
Participantes 1