आपका कोड ठीक है। आपको बस इतना याद रखना है कि PESSIMISTIC_WRITE एक चुनें … Oracle और PostgreSQL 9.5 . में . मुझे लगता है कि आप जेपीए को बताने के बारे में भूल गए होंगे, कि आप पोस्टग्रेस के नए संस्करण का उपयोग करना चाहते हैं। तो आपके पास दो विकल्प हैं:
- जेपीए को बताएं कि आप पोस्टग्रेएसक्यूएल बोली का उपयोग कर रहे हैं जो
स्किप लॉक
का समर्थन करता है :
इसके बाद मुझे वांछित आउटपुट प्राप्त हुआ:spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL10Dialect
और जाहिर है, लेन-देन पूरा होने तक समवर्ती धागा बंद पंक्तियों को लाने में सक्षम नहीं था।where subscripti0_.valid_until<=? and subscripti0_.status='ACTIVE' for update of subscripti0_1_ skip locked
- मूल क्वेरी का उपयोग करें:
SELECT * FROM objects o WHERE o.valid_until <= :validUntil FOR UPDATE SKIP LOCKED