Galera debugando meu código coloquei o breakpoint na linha em negrito onde recebe o List<> depois de pesquisado no BD, mas notei que ele para nesse ponto pelo menos 5 vezes sendo q na última a sessão está fechada e estoura o erro na tela…o q estou fazendo de errado? será q é alguma config errada do Hibernate? idéias…
public List<Cidade> getCidades(){
InterfaceDAO<Cidade> cidadeDAO = new HibernateDAO<Cidade>(Cidade.class, FacesContextUtil.getRequestSession());
List<Cidade> cidades = cidadeDAO.getBeans();
return cidades;
}
<c:if test="${not empty obj.cidades}"><!-- Passa a 1 vez -->
<c:forEach items="${obj.cidades}" var="cidade"><!-- Passa pela 2 vez -->
<c:forEach>
</c:if>
Então só no exemplo acima seria feita duas consultas no banco.
Talvez se puder deixar o código assim:
public List<Cidade> getCidades(){
if(this.cidades == null) {
InterfaceDAO<Cidade> cidadeDAO = new HibernateDAO<Cidade>(Cidade.class, FacesContextUtil.getRequestSession());
this.cidades = cidadeDAO.getBeans();
}
return this.cidades;
}
Se não puder deixar como acima, pode colocar as cidades como atributo da requisição, seja no Bean ou no JSP.