Konnte nicht erhalten Transaktion synchron-Session für den aktuellen thread
Ich bin immer folgende Exception mit einer Spring4/Hibernate4 Projekt, das ich konvertiert aus xml- , Java-Config.
org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
Das Projekt startet Eigentum und fehlerfreier in Eclipse, aber auf die erste Anfrage der Ausnahme wird angezeigt. In meinem ConfigRoot
-Klasse, ich habe @Bean
konfiguriert für DataSource
, SessionFactory
, HibernateTransactionManager
, ImprovedNamingStrategy
.
Alle meine @Service
Dienstleistungen sind gekennzeichnet mit @Transactional
.
Eine Ahnung, Woher das kommen könnte ?
Bearbeiten 1
Wie gewünscht, hier der stacktrace:
org.springframework.web.util.NestedServletException: Request-Verarbeitung ist fehlgeschlagen; verschachtelte Ausnahme ist org.hibernate.HibernateException: Konnte nicht ermittelt Transaktion synchron-Session für den aktuellen thread org.springframework.web.- servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) org.springframework.web.- servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.- servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.- servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.- servlet.http.HttpServlet.service(HttpServlet.java:722) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.hibernate.HibernateException: Konnte nicht ermittelt Transaktion synchron-Session für den aktuellen thread org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:134) org.hibernate.intern.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1014) Mitarbeiter.service.PersonService.getAllInHierarchcalOrder(PersonService.java:58) Mitarbeiter.controller.PersonController.getPersons(PersonController.java:64) Sonne.reflektieren.NativeMethodAccessorImpl.invoke0(Native-Methode) Sonne.reflektieren.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) Sonne.reflektieren.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflektieren.Methode.invoke(Method.java:606) org.springframework.web.Methode.Unterstützung.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) org.springframework.web.- servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) org.springframework.web.- servlet.DispatcherServlet.doService(DispatcherServlet.java:877) org.springframework.web.- servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) org.springframework.web.- servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.- servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.- servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.- servlet.http.HttpServlet.service(HttpServlet.java:722) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
Edit 2
Seltsam, ich habe mir die ganze Java-Config-code aus einem anderen Projekt funktioniert es einwandfrei, allerdings habe ich übersehen ein detail. Das ist, warum ich bin nicht in Anbetracht Einige Transaktion Ausbreitungen nicht die Arbeit mit Spring/Hibernate 4.
InformationsquelleAutor yglodt | 2014-10-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gerade gefunden ...
@EnableTransactionManagement
fehlte auf meinem root-Konfiguration-Klasse.Vielen Dank an alle für die Anleitung.
InformationsquelleAutor yglodt
Ich vermute, es ist ein problem der Transaktions-proxy nicht verwendet wird (nur eine Vermutung aus dem stacktrace). Standardmäßig Frühjahr verwendet das Jdk proxy, aber das braucht den Dienst importiert werden als Schnittstelle in der Steuerung.
Wenn es der Fall ist, erstellen Sie eine Schnittstelle
IPersonService
mit entsprechenden Methode ausPersonService
und importieren Sie Sie inPersonController
als@Autowired IPersonService personService;
oder noch besser, umbenennenPersonService
zuPersonServiceImpl
und machenPersonService
eine Schnittstelle.... Konsequent tun, dass für alle Ihre Transaktions-Dienste ...
InformationsquelleAutor Serge Ballesta
Solches Szenario:
Verwenden Sie diese Daumenregel :
1) Für Jedes @Entity
@Table(name = "Tabelle1")
Erstellen von entsprechenden Dienstleistungen, sowie die Entsprechende DAO.
InformationsquelleAutor ArunDhwaj IIITH