Ho fatto un bel po 'di ricerche su questo senza fortuna, ma tutte le risposte hanno la tendenza a puntare verso le impostazioni del contesto di sessione nel file di configurazione. La cosa strana è che ottengo una connessione di sessione la prima volta che colpisco la pagina (e quindi, un set di risultati di successo), ma poi quando ricarico ottengo la seguente eccezione: org.hibernate.SessionException: la sessione è chiusa!Avere un problema con org.hibernate.SessionException: la sessione è chiusa! in Hibernate
Qui sono le mie impostazioni di configurazione che non sono dB stringa di connessione correlati:
<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>
Ecco un esempio di una chiamata che faccio che produce la situazione che ho descritto sopra.
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;
}
Il riferimento di variabile di sessione è un campo statico che contiene la sessione corrente. Tutti i dettagli della connessione della sessione sono manuali di riferimento. Ad esempio, ecco il mio programma di utilità Sospensione sessione:
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;
}
}
Avete qualche implementazione per chiudere/uccidere la sessione? –