Для обработки сеанса закрыто исключение:
1-) В вашем файле hibernate.cfg измените значение по умолчанию hibernate.current_session_context_class
на managed
вместо thread
2-) Создайте два метода, чтобы правильно открывать и закрывать сеанс и использовать до и после вашего запроса, как показано ниже:
public static void renewSession() {
try {
session = HibernateUtil.getSessionFactory().openSession();
session.setFlushMode(FlushMode.MANUAL);
ManagedSessionContext.bind(session);
session.beginTransaction();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void closeSession()
{
try {
ManagedSessionContext.unbind(HibernateUtil.getSessionFactory());
session.flush();
session.getTransaction().commit();
session.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
Использование:
try {
renewSession();
String query = "from Table tb";
data = (List<TypeObject>)session.createQuery(query).list();
closeSession();
} catch (Exception e) {
e.printStackTrace();
}