MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

TransactionRequiredException एक अद्यतन निष्पादित/क्वेरी हटाएं

मुझे यकीन नहीं है कि यह आपकी स्थिति में मदद करेगा (अर्थात यदि यह अभी भी मौजूद है), हालांकि, इसी तरह की समस्या के लिए वेब को खंगालने के बाद।

मैं एक अद्यतन करने के लिए एक दृढ़ता EntityManager से एक मूल क्वेरी बना रहा था।

Query query = entityManager.createNativeQuery(queryString);

मुझे निम्न त्रुटि प्राप्त हो रही थी:

<ब्लॉकक्वॉट>

इसके कारण:javax.persistence.TransactionRequiredException:निष्पादन अद्यतन/क्वेरी हटाएं

कई समाधान आपके तरीके में @Transactional जोड़ने का सुझाव देते हैं। बस ऐसा करने से त्रुटि नहीं बदली।

कुछ समाधान EntityManager से EntityTransaction . के लिए पूछने का सुझाव देते हैं ताकि आप start को कॉल कर सकें और खुद को कमिट कर सकें। यह एक और एरर फेंकता है:

<ब्लॉकक्वॉट>

इसके कारण:java.lang.IllegalStateException:साझा EntityManager पर लेन-देन बनाने की अनुमति नहीं है - इसके बजाय स्प्रिंग लेनदेन या EJBCMT का उपयोग करें

मैंने तब एक विधि की कोशिश की, जो अधिकांश साइटों का कहना है कि उपयोग अनुप्रयोग प्रबंधित इकाई प्रबंधकों के लिए है न कि कंटेनर प्रबंधित (जो मुझे विश्वास है कि वसंत है) और वह था joinTransaction()

@Transactional होने के कारण विधि को सजाना और फिर कॉल करना joinTransaction() कॉल करने से ठीक पहले EntityManager ऑब्जेक्ट पर query.executeUpdate() और मेरे मूल क्वेरी अपडेट ने काम किया।

मुझे उम्मीद है कि इससे किसी और को इस समस्या का सामना करने में मदद मिलेगी।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB क्या है और यह कैसे काम करता है?

  2. पिछले n दिनों के भीतर सभी दस्तावेज़ खोजें

  3. पाइपलाइन एकत्रीकरण के साथ स्प्रिंग डेटा MongoDB लुकअप

  4. किसी सरणी में पहले आइटम में मिलान करने के लिए MongoDB को क्वेरी करना

  5. नेस्टेड सरणी डेटा के लिए elemMatch के साथ MongoDB क्वेरी