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

सेवपॉइंट/नेस्टेड लेनदेन के लिए हाइबरनेट सत्र.doWork(...) का उपयोग कैसे करें?

प्रारंभिक java.sql.SQLException: IJ031040 हमारे आयात के दौरान एक विशिष्ट परिणाम से संबंधित प्रतीत होता है। बाद में इसे दूसरे java.sql.SQLException . से बदल दिया गया है जो प्रबंधित लेनदेन के लिए रोलबैक को मना करता है। लेकिन मैं अंततः मूल SQL कथन जारी करके समस्या का समाधान कर सकता था:

// Mark the current state as SAVEPOINT...
Session session = this.em.unwrap(Session.class);
session.doWork(new Work() {
    @Override
    public void execute(Connection connection) throws SQLException {
        connection.prepareStatement("SAVEPOINT TRY_POSSIBILITY").executeUpdate();
    }
});

// 
// Do all the risky changes... verify... decide...
// 

// Rollback to SAVEPOINT if necessary!
session.doWork(new Work() {
    @Override
    public void execute(Connection connection) throws SQLException {
        connection.prepareStatement("ROLLBACK TO SAVEPOINT TRY_POSSIBILITY").executeUpdate();
    }
});

यह बड़े लेनदेन में "नेस्टेड लेनदेन" की अनुमति देता है और मेरी समस्याओं का समाधान करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सी # में पीएल-एसक्यूएल ब्लॉक द्वारा लौटाए गए dbms.output मान को कैसे प्राप्त करें

  2. Oracle SQL चयन में पंक्तियों की संख्या?

  3. Oracle के DBMS_ASSERT के लिए Sql सर्वर समतुल्य क्या है?

  4. स्प्रिंग कनेक्शन पूलिंग मुद्दा

  5. Oracle SqlPlus - एक फ़ाइल में आउटपुट सहेजना लेकिन स्क्रीन पर नहीं दिखाना