मैं जिस पर लगभग सभी संबंधों निम्नलिखित एनोटेशन हैं एक कोड बेस विरासत में मिला हैजेपीए का कैस्केड = रिमूव और हाइबरनेट का @ ओनडेलेट एक साथ उपयोग किया जाता है?
@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE }, mappedBy = "someThing")
@OnDelete(action = OnDeleteAction.CASCADE)
अब मैं आ रही परेशानी को समझ कर @OnDelete
पहली जगह में है। Hibernate: OnDelete vs cascade=CascadeType.REMOVE दिलचस्प है, लेकिन दुर्भाग्य से कोई जवाब नहीं है और @OnDelete
के लिए जावाडॉक विशेष रूप से बेकार है।
अन्य प्रश्नों से यह ऑनडेलेट एनोटेशन की तरह दिखता है किसी भी तरह से डीबी को कैस्केडिंग करने देता है, जबकि @OneToMany
पर कैस्केडिंग निर्देश दें, ओआरएम इसे करते हैं, लेकिन इनका उपयोग करने का उद्देश्य कभी भी क्या होगा?
और @OneToMany
का कैस्केड निर्देश वास्तव में ओआरएम कार्यान्वयन को डीबी आधारित कैस्केड उत्पन्न करने की अनुमति नहीं देता है?
साथ व्यवहार एक '@ OneToOne' और एक' @ OneToMany' काफी एक ही होना प्रतीत नहीं होता है। '@OneToMany (...) @OnDelete (action = OnDeleteAction.CASCADE) ऑब्जेक्ट दरवाजे' के साथ, ऐसा लगता है कि घर को हटाने से उसके सभी दरवाजे हटा दिए जाते हैं, लेकिन दरवाजा हटाना घर को नहीं हटाता है। – Bruno
मुझे लगता है कि, @OneToMany List दरवाजे 'होना चाहिए, मुझे लगता है। लेकिन इसके अलावा, यह मैपिंग आम तौर पर हाउस टेबल पर एक कॉलम नहीं बनायेगी। आप या तो 'Doors.house', या एक संग्रह तालिका पर एक रिवर्स मैपिंग होगा। डेटाबेस कैस्केडिंग के लिए, मुझे लगता है कि कॉलम उस टेबल में होना चाहिए जिसमें आप कैस्केड करना चाहते हैं। –
असहमत। मुझे लगता है कि उपयोगकर्ता के विचार में '' 'CascadeType.REMOVE''' और' '@DDelete''' के बीच सबसे बड़ा अंतर यह है कि' @ 'ऑनडेले'' 'जेपीएक्यूएल के साथ काम कर सकता है (क्योंकि यह डीबी कैस्केड पर आधारित है), लेकिन '' CascadeType.REMOVE'' 'JPAQL के साथ काम नहीं कर सकता है। – okwap