मैंने अपने इंटरफ़ेस में @Transactional लागू किया है, और मेरी serviceImpl के अंदर, संबंधित विधि कुछ अन्य विधियों को कॉल कर रही है, एक विधि पढ़ रही है, दूसरी विधि लिख रही है। हालांकि मैंने लेन-देन संबंधी के रूप में एनोटेट किया है, जब मैं समवर्ती अनुरोध दे रहा हूं, तो मेरी सम्मिलित विधि org.hibernate.exception.LockAcquisitionException: त्रुटि फेंक रही है। एक और समस्या यह है कि, यह सम्मिलित विधि एक साझा विधि है और यह Dao.save(obj) जैसी सम्मिलित विधि निष्पादित करती है। Dao.save() एक सामान्य तरीका है इसलिए मैं यहां कुछ नहीं कर सकता। लॉक एक्वायर्ड अपवाद से बचने के लिए मुझे इंटरफ़ेस पर कुछ लागू करना होगा। क्या यह बताना संभव है कि जब तक लॉक एक्वायर्ड न हो जाए तब तक प्रतीक्षा करें? या लेन-देन विफल होने पर पुनः प्रयास करें? या लेन-देन पूरा होने तक सभी तालिकाओं को लॉक करें ताकि कोई अन्य अनुरोध रीलेवेंट संसाधनों तक नहीं पहुंच सके? मेरा हाइबरनेट संस्करण 3.x है, और डेटाबेस MySQL 5.6 है

1
Sayed Uz Zaman 19 मई 2020, 18:29

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा करने का सबसे अच्छा तरीका है,

  1. अपने तरीकों को लेन-देन के रूप में चिह्नित करें
  2. अपने mysql डेटाबेस सेटिंग्स में ट्रांजेक्शन आइसोलेशन लेवल को SERIALIZABLE . के रूप में सेट करें
2
Sayed Uz Zaman 16 सितंबर 2020, 09:08