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

जेपीए स्तर से अपडेट स्किप लॉक के लिए चयन करें

हाइबरनेट UPGRADE_SKIPLOCKED लॉक मोड प्रदान करता है।

हाइबरनेट लॉकमोड दस्तावेज़ीकरण, आपको PESSIMISTIC_WRITE . को संयोजित करना होगा जेपीए LockModeType :

entityManager.find(Department.class, 1, LockModeType.PESSIMISTIC_WRITE);

और लॉक टाइमआउट सेटिंग, उदाहरण के लिए आपकी दृढ़ता इकाई के लिएpersistence.xml में:

<properties>
   <property name="javax.persistence.query.timeout" value="-2"/>
</properties>

(ध्यान दें कि आप इस LockMode को जटिल क्वेरी के लिए भी कॉन्फ़िगर कर सकते हैं)

स्किप लॉक्ड एएनएसआई एसक्यूएल का हिस्सा नहीं है। कुछ RDBMS जैसे निम्नलिखित इसे एक विशिष्ट विशेषता के रूप में प्रदान करते हैं:

तो शुद्ध जेपीए के साथ, प्रश्नों में "स्किप लॉक" निर्दिष्ट करना संभव नहीं है। वास्तव में, जैसा कि LockModeType , जेपीए 2.1 केवल निम्नलिखित का समर्थन करता है:

  • कोई नहीं
  • आशावादी
  • OPTIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_READ
  • PESSIMISTIC_WRITE
  • पढ़ें
  • लिखें

हालाँकि, अपनी क्वेरी में SKIP LOCKED को सक्षम करने के लिए आप इन विकल्पों का उपयोग कर सकते हैं:

  • विशिष्ट जेपीए कार्यान्वयन सुविधा का उपयोग करें, जैसे हाइबरनेट लॉकमोड जो PESSIMISTIC_WRITE के संयोजन के कारण JPA क्वेरी के माध्यम से SKIP LOCKED को निर्दिष्ट करने की अनुमति देता है लॉकमोड टाइप लॉक टाइमआउट विशिष्ट सेटिंग जैसा कि ऊपर वर्णित है
  • मूल SQL क्वेरी बनाएं जैसा आपने किया था


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORACLE SQL विंडो फ़ंक्शन का उपयोग करके कुल और दिन का कुल चल रहा है

  2. java.lang.ClassCastException:oracle.sql.TIMESTAMP को java.sql.Timestamp में नहीं डाला जा सकता है

  3. ओरेकल:क्या मैं प्रोग्रामेटिक रूप से बता सकता हूं कि किसी प्रक्रिया में कोई प्रतिबद्धता है या नहीं?

  4. ओरेकल अनुक्रम पर LAST_NUMBER

  5. oracle 10g में समय-समय पर दिनांक कैसे बदलें?