हाइबरनेट 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 क्वेरी बनाएं जैसा आपने किया था