olá Pessoal!
Estou estudando uma video aula sobre “JSF” e está acontecendo um erro na compilação que não consigo resolver. O erro está descrito abaixo:
- GRAVE: Servlet /JSTL_Hibernate threw load() exception
org.hibernate.SessionException: Session is closed!
Existe uma classe que executa a informação no BD ela está descrita abaixo:
import java.io.Serializable;
import java.util.List;
import org.hibernate.Session;
import br.com.siscom.util.HibernateUtil;
public class HibernateDAO<T> implements InterfaceDAO<T> {
private Class<T> classe;
public HibernateDAO(Class<T> classe) {
super();
this.classe = classe;
}
public void atualizar(T bean){
Session session = HibernateUtil.getSessionfactory().getCurrentSession();
session.beginTransaction().commit();
session.update(bean);
}
public void salvar(T bean){
Session session = HibernateUtil.getSessionfactory().getCurrentSession();
session.beginTransaction().commit();
session.save(bean);
}
public void excluir(T bean){
Session session = HibernateUtil.getSessionfactory().getCurrentSession();
session.beginTransaction().commit();
session.delete(bean);
}
@Override
public T getBean(Serializable codigo) {
Session session = HibernateUtil.getSessionfactory().getCurrentSession();
session.beginTransaction().commit();
T bean = (T)session.get(classe, codigo);
return bean;
}
@Override
public List<T> getBeans() {
Session session = HibernateUtil.getSessionfactory().getCurrentSession();
session.beginTransaction().commit();
List<T> beans = (List<T>)session.createCriteria(classe).list();
return beans;
}
}
Como se vê no código acima a sessão não é fechada porque no beginTransaction já é feito um commit. Como resolver este problema?