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

कई तालिकाओं पर स्प्रिंग लेनदेन और रोलबैक

मेरा उत्तर अपडेट कर रहा है:

  1. आप चाहते हैं कि आपकी "सार्वजनिक उद्धरण बचत (उद्धरण उद्धरण)" विधि लेन-देन वाली हो।
  2. जब इस पद्धति को लागू किया जाता है ... लेन-देन TransactionInterceptor में शुरू होता है और प्रॉक्सी से "सार्वजनिक उद्धरण सहेजें (उद्धरण उद्धरण)" लागू किया जाता है
  3. लाइन "quoteLineDao.delete(new Long(44));" ठीक काम करता है
  4. लाइन "System.out.println("°°°°°°°°°°°°°°°°°°°, लाइन 44 हटा दिया गया");" ठीक काम करता है
  5. लाइन "quoteDao.save(quote);" बाधा उल्लंघन अपवाद देता है। लेन-देन को रोलबैक के रूप में चिह्नित किया गया है
  6. आप इस अपवाद को पकड़ रहे हैं और इसका उपभोग कर रहे हैं और अपवाद का प्रचार नहीं कर रहे हैं
  7. विधि "सार्वजनिक भाव सहेजें(उद्धरण उद्धरण)" लाइन "वापसी शून्य" के कारण शून्य वापस आ जाएगी;
  8. अब कोड ट्रांजेक्शन इंटरसेप्टर तक पहुंच गया है और चूंकि इस इंटरसेप्टर में कोई अपवाद नहीं था, यह कमिट करने की कोशिश करता है लेकिन ट्रांजैक्शन पहले से ही रोलबैक के रूप में चिह्नित है और इसलिए विफल हो जाता है।

समाधान:- आपको अपवाद का उपभोग नहीं करना चाहिए और इसके बजाय अपनी लेन-देन की आवश्यकता के कारण अपवाद का प्रचार करना चाहिए।

निम्नलिखित में बदलें। थ्रो स्टेटमेंट जोड़ा है।

try{
      quoteLineDao.delete(new Long(44));
      System.out.println("°°°°°°°°°°°°°°°°°°Line 44 deleted");
      return  quoteDao.save(quote); 
} catch(Exception e){
      Logger.getLogger(QuoteService.class).log(Logger.Level.ERROR, e);
      throw e;
}

चरण दर चरण स्पष्टीकरण इस लिंक में उपलब्ध है:जेपीए लेन-देन नहीं कर सका:लेन-देन केवल रोलबैक के रूप में चिह्नित किया गया




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LAST_INSERT_ID() हमेशा 0 (RMySQL) देता है - अलग कनेक्शन समस्या

  2. sqlfiddle.com 5.5.30 और मारियाडीबी 5.5.31 में भिन्न परिणाम

  3. केवल पढ़ने के लिए एक्सेस के साथ MySQL के लिए ODBC 5.1 कनेक्शन स्ट्रिंग

  4. MySQL - स्ट्रिंग लंबाई के आधार पर डेटा का चयन कैसे करें

  5. एक प्रश्न में दो तालिकाओं से पंक्तियों की गणना कैसे करें?