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

MySQL में @OneToMany त्रुटियां:मूल पंक्ति को हटा या अपडेट नहीं कर सकता:एक विदेशी कुंजी बाधा विफल हो जाती है

आपको दो त्रुटियां हैं।

पहली त्रुटि:आपने हेडर और विवरण के बीच द्विदिश संबंध को दो बार मैप किया:एक बार हेडर में, और एक बार विवरण में। जब आपके पास एक द्विदिश संघ होता है, तो mappedBy का उपयोग करते हुए, एक पक्ष (इस मामले में एक शीर्ष लेख पक्ष) को दूसरे पक्ष के प्रतिलोम के रूप में घोषित किया जाना चाहिए विशेषता:

@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, mappedBy = "reminderHeader")
@Cascade(value = { CascadeType.SAVE_UPDATE, CascadeType.DELETE })
@Fetch(FetchMode.SELECT)
private Set<ReminderDetails> reminderDetailslist;

दूसरी त्रुटि:DELETE कैस्केड केवल तभी लागू होता है जब आप Session.delete() का उपयोग करते हैं इकाई को हटाने की विधि। क्वेरी हटाएं सत्र को पूरी तरह से बायपास करें (जिसका अर्थ है कि क्वेरी द्वारा हटाए गए निकाय लेकिन पहले लोड किए गए सत्र में रहते हैं, उसी स्थिति में जैसे कि कोई क्वेरी निष्पादित नहीं की गई थी)।

इसलिए, विलोपन को कैस्केड करने के लिए, आपको सभी शीर्षलेखों को हटाने के लिए एक चुनिंदा क्वेरी निष्पादित करनी होगी, और फिर इन शीर्षलेखों पर लूप करना होगा और session.delete() का उपयोग करके उन्हें हटाना होगा। ।




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

  2. कुछ चेतावनियाँ [पैरामीटर की अपेक्षा करता है]

  3. MySQL डेटाबेस के लिए INFORMATION_SCHEMA तालिका बनाएं

  4. स्थानीय Microsoft MySQL डेटाबेस को दैनिक शेड्यूल किए गए दूरस्थ mysql डेटाबेस से सिंक करें

  5. PHP का कहना है कि mysqli_select_db () का उपयोग करने के बाद भी कोई डेटाबेस नहीं चुना गया है