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

हाइबरनेट + डुप्लीकेट कुंजी तर्क पर

हाइबरनेट एक ConstraintViolationException फेंक सकता है जब आप एक ऐसी पंक्ति डालने का प्रयास करते हैं जो एक बाधा को तोड़ती है (एक अद्वितीय बाधा सहित)। यदि आपको वह अपवाद नहीं मिलता है, तो आपको कुछ अन्य सामान्य हाइबरनेट अपवाद मिल सकते हैं - यह हाइबरनेट के संस्करण और हाइबरनेट की क्षमता पर निर्भर करता है कि आप जिस संस्करण और डेटाबेस का उपयोग कर रहे हैं उसमें हाइबरनेट अपवाद के लिए MySQL अपवाद को मैप करें ( मैंने हर चीज पर इसका परीक्षण नहीं किया है)।

कॉल करने के बाद ही आपको अपवाद मिलेगा flush() , इसलिए आपको यह सुनिश्चित करना चाहिए कि यह आपके ट्राइ-कैच ब्लॉक में भी है।

मैं उन समाधानों को लागू करने में सावधान रहूंगा जहां आप जांचते हैं कि पंक्ति पहले मौजूद है। यदि एकाधिक सत्र एक साथ तालिका को अद्यतन कर रहे हैं तो आपको दौड़ की स्थिति मिल सकती है। यह देखने के लिए कि क्या यह मौजूद है, दो प्रक्रियाएं लगभग एक ही समय में पंक्ति को पढ़ती हैं; वे दोनों पता लगाते हैं कि यह वहां नहीं है, और फिर वे दोनों एक नई पंक्ति बनाने का प्रयास करते हैं। रेस कौन जीतता है इसके आधार पर कोई असफल हो जाएगा।

एक बेहतर उपाय यह है कि पहले सम्मिलित करने का प्रयास किया जाए और यदि यह विफल हो जाए, तो मान लें कि यह पहले से ही था। हालांकि, एक बार आपके पास अपवाद होने के बाद आपको वापस रोल करना होगा, जिससे यह सीमित हो जाएगा कि आप इस दृष्टिकोण का उपयोग कैसे कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पायथन डेटटाइम स्ट्रिंग का पूर्णांक मिलीसेकंड में रूपांतरण

  2. node.js और mysql कनेक्शन पूल निर्यात नहीं करता है

  3. PHP में लूप के साथ मैं एक ही आईडी डेटा कैसे सूचीबद्ध कर सकता हूं?

  4. MySQL pid समाप्त हो गया (mysql प्रारंभ नहीं कर सकता)

  5. दूसरे कॉलम के बाद कॉलम जोड़ें