2014-10-03 10 views
6

मैं एक Spring4/Hibernate4 परियोजना मैं जावा-कॉन्फ़िग को XML- से बदल के साथ निम्न अपवाद हो रही है के लेन-देन सिंक्रनाइज़ सत्र प्राप्त नहीं किया जा सका।वर्तमान धागा

org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread 

प्रोजेक्ट ग्रहण में संपत्ति और त्रुटि मुक्त शुरू होता है, लेकिन पहले अनुरोध पर अपवाद दिखाई देता है। ConfigRoot -class में मेरे पास @BeanDataSource, SessionFactory, HibernateTransactionManager, ImprovedNamingStrategy के लिए कॉन्फ़िगर किया गया है।

मेरे सभी @Service सेवाओं @Transactional से एनोटेट।

कोई विचार जहां से यह आ सकता है?

संपादित करें 1

अनुरोध किया के रूप में, यहाँ स्टैकट्रेस: ​​

 
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current 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: Could not obtain transaction-synchronized Session for current thread 
    org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:134) 
    org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1014) 
    employees.service.PersonService.getAllInHierarchcalOrder(PersonService.java:58) 
    employees.controller.PersonController.getPersons(PersonController.java:64) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:606) 
    org.springframework.web.method.support.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) 

संपादित 2

अजीब है, मैं एक अन्य परियोजना जो दोषरहित काम करता है से पूरे जावा-कॉन्फ़िग कोड उधार , निश्चित रूप से मैं एक विस्तार से चूक गया। यही कारण है कि मैं Some transaction propagations not working with Spring/Hibernate 4 पर विचार नहीं कर रहा हूं।

+0

चेक इस [तो सवाल] (http://stackoverflow.com/questions/25569365/some-transaction-propagations-not-working-with-spring-hibernate-4)। –

+0

यदि कम से कम आपने स्टैकट्रैक दिखाया है ... –

उत्तर

8

बस यह पाया ... @EnableTransactionManagement मेरी जड़ विन्यास वर्ग पर याद आ रही थी करो।

मार्गदर्शन के लिए सभी को धन्यवाद।

+0

मैंने अभी तक @EnableTransactionManagement का उपयोग नहीं किया है। मेरी सभी सेवा परतें और दाओ परतें अभी तक ठीक काम कर रही हैं। अचानक मैं इस समस्या में आया। इसके अलावा, एक ही दाओ में एक सहेजने की विधि है, और यह ठीक काम करता है। केवल जब मैं मानदंड बनाने की कोशिश करता हूं, तो यह समस्या दे रहा है। दूसरा दाओ अभी भी ठीक काम कर रहा है। क्या आपके पास कोई सुझाव है? –

1

मुझे लगता है यह (स्टैकट्रेस से सिर्फ एक अनुमान) नहीं इस्तेमाल किया जा रहा व्यवहार प्रॉक्सी की एक समस्या है। डिफ़ॉल्ट रूप से, वसंत इसके लिए एक जेडीके प्रॉक्सी का उपयोग करता है, लेकिन नियंत्रक में इंटरफ़ेस के रूप में आयात करने की सेवा की आवश्यकता होती है।

यदि यह मामला है, PersonService से एक अंतरफलक IPersonService प्रासंगिक विधि युक्त बना सकते हैं और PersonController@Autowired IPersonService personService; या और भी बेहतर रूप में आयात, PersonServiceImpl करने के लिए PersonService नाम बदलने और PersonService एक इंटरफेस बनाते हैं।

और ... लगातार कि आपके सभी लेन-देन संबंधी सेवाओं के लिए ...

0

इस तरह के परिदृश्य:

उपयोग इस अंगूठे का नियम:

1) हर @Entity @Table (नाम = "Table1" के लिए)

इसी सेवा बनाएँ, और इसी डीएओ।

संबंधित मुद्दे