2015-05-13 11 views
13

Ho ottenuto un'eccezione inferiore quando ho utilizzato session.getCurrentSession().Nessuna sessione attualmente associata al contesto di esecuzione

ho accennato

hibernate.current_session_context_class: managed 

org.hibernate.HibernateException: No session currently bound to execution context 
    at org.hibernate.context.internal.ManagedSessionContext.currentSession(ManagedSessionContext.java:75) 
    at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1014) 
    at io.dropwizard.hibernate.AbstractDAO.currentSession(AbstractDAO.java:36) 
    at io.dropwizard.hibernate.AbstractDAO.persist(AbstractDAO.java:149) 

io uso questo con dropwizard. Qualcuno può aiutarmi a risolvere questo?

+2

Codice si prega di fornire il codice che genera l'eccezione –

+0

Inizialmente ho scritto Query per ottenere le informazioni dal DB. Questo verrà eseguito. Ma dopo ho usato per salvare i dati negli altri tavoli. Dà un errore. Ho pensato che la sessione verrà chiusa dopo l'esecuzione della mia prima interazione con DB. Ma questo dovrebbe essere previsto poiché utilizzo hibernate.current_session_context_class: gestito – Srinivas

+0

Il codice sarà troppo lungo per incollare sentire – Srinivas

risposta

1

Puoi provare con: session.openSession() - Indica all'ibernazione di aprire sempre una nuova sessione e devi chiudere quando hai finito con le operazioni. Con session.getCurrentSession(), hibernate restituisce una sessione legata a un contesto che non è necessario chiudere e deve solo impostare hibernate.current_session_context_class sul thread.

È anche possibile configurare la sessione con SpringSessionContext, se l'applicazione è basata su Spring.

Modifica il tuo hibernate-cfg.xml con la linea di seguito:

hibernate.current_session_context_class=org.springframework.orm.hibernate3.SpringSessionContext 

Quanto sopra linea farà?

Fare classe contesto di sessione come "org.springframework.orm.hibernate3.SpringSessionContext ", Sospensione assumerà sta eseguendo all'interno di un contesto transazionale Spring (cioè attraverso un aspetto transazionale Spring) e Spring verrà ora gestore la tua transazione per te. Tuttavia, se si chiama getCurrentSession() al di fuori di tale contesto, Hibernate genererà un'eccezione lamentandosi del fatto che nessuna sessione è legata al thread.

Problemi correlati