Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

सीम @ ट्रांसेक्शनल एनोटेशन काम नहीं कर रहा है?

मैं इस बात से परिचित नहीं हूं कि सीम कैसे काम करता है इसलिए अगर यह उत्तर लागू नहीं होता है तो मैं पहले से क्षमा चाहता हूं।

मैंने देखा कि वह विधि जो @Transactional . है protected है . यह मेरे लिए तात्पर्य है कि इसे किसी अन्य आंतरिक विधि द्वारा बुलाया जा रहा है।

स्प्रिंग के AOP के साथ, आप सार्वजनिक . को चिह्नित करते हैं @Transactional . के साथ तरीके जो लिपटे हुए हैं और एक लेनदेन प्रॉक्सी के साथ बदल दिए गए हैं। जब कोई बाहरी वर्ग public . को कॉल करता है विधि, यह प्रॉक्सी को कॉल कर रही है जो लेनदेन बनाती है। यदि बाहरी वर्ग किसी अन्य public को कॉल करता है विधि जो नहीं है @Transactional . से चिह्नित जो तब एक आंतरिक विधि कहता है, कोई लेनदेन नहीं होगा क्योंकि प्रॉक्सी को बिल्कुल भी नहीं बुलाया जा रहा है।

वसंत ऋतु में, भले ही आप अपना doWork() बदल दें सार्वजनिक होने का तरीका, वही समस्या होगी। कोई लेनदेन नहीं क्योंकि प्रॉक्सी ऑब्जेक्ट नहीं कहा जा रहा है। क्लास के अंदर किए गए मेथड कॉल्स प्रॉक्सी ऑब्जेक्ट को कॉल नहीं कर रहे हैं।

कुछ दस्तावेज़ों को तुरंत पढ़ने से यह संकेत मिलता है कि, स्प्रिंग एओपी की तरह, सीम CGLib प्रॉक्सीइंग का उपयोग कर रहा है। . सवाल यह है कि क्या यह सभी तरीकों को प्रॉक्सी करने में सक्षम है - भले ही उन्हें प्रॉक्सी ऑब्जेक्ट के भीतर से बुलाया गया हो। यदि यह उत्तर लागू नहीं होता है तो अपना समय बर्बाद करने के लिए क्षमा करें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. परिणाम सेट के बिना JDBC स्प्रिंग का उपयोग करके एक BLOB पढ़ना

  2. sqlldr.exe विंडोज 10 के लिए काम नहीं कर रहा है

  3. एसक्यूएल कई फ़ील्ड के साथ डुप्लिकेट ढूंढें (कोई अद्वितीय आईडी नहीं) चारों ओर काम करें

  4. किसी अन्य तालिका में सम्मिलित करने के लिए ट्रिगर बनाएं

  5. Windows 7 पर Oracle 12c एंटरप्राइज़ संस्करण स्थापित करना