He hecho bastante investigación sobre esto sin suerte, pero todas las respuestas tienden a apuntar hacia la configuración de contexto de la sesión en el archivo de configuración. Lo que es extraño es que recibo una conexión de sesión la primera vez que llego a la página (y, por lo tanto, un conjunto de resultados exitoso), pero cuando recargo obtengo la siguiente excepción: org.hibernate.SessionException: ¡La sesión está cerrada!Tiene un problema con org.hibernate.SessionException: ¡la sesión está cerrada! en Hibernate
Éstos son mis ajustes de configuración que no están relacionados con DB cadena de conexión:
<property name="hibernate.show_sql">false</property>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="hibernate.cache.use_query_cache">false</property>
<property name="hibernate.cache.use_minimal_puts">false</property>
Aquí es un ejemplo de una llamada que hago que produce la situación que he descrito anteriormente.
public T get(int id) {
session.beginTransaction();
T type;
try {
type = getTypeClass().cast(session.get(getTypeClass(), id));
} catch (ClassCastException classCastException) {
throw new ClassCastException(classCastException.getMessage());
}
session.getTransaction().commit();
return type;
}
La referencia de la variable de sesión es un campo estático que contiene la sesión actual. Todos los detalles de conexión de la sesión son el manual de referencia del libro de texto. Por ejemplo, aquí está mi Hibernate utilidad sesión:
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateSessionFactoryUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
return new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
¿Tiene alguna implementación para cerrar/matar la sesión? –