पर 'संस्करण' फ़ील्ड शामिल करना चाहिए, मुझे पता है कि जब मेरी लगातार संस्थाओं के hashcode()
और equals()
ओवरराइड करते हैं तो मुझे आईडी शामिल नहीं करना चाहिए और केवल सार्थक गुणों को शामिल करना चाहिए जो विशिष्ट रूप से ऑब्जेक्ट की पहचान करते हैं । लेकिन version
फ़ील्ड के बारे में क्या है जिसका उपयोग आशावादी समेकन नियंत्रण के लिए हैबर्नेट द्वारा किया जाता है? क्या मुझे आईडी की तरह ही इसे छोड़ना चाहिए? क्या होगा यदि new User(name='John', version=1).equals(new User(name='John',version=2))
कहें, तो क्या यह किसी भी तरह से हाइबरनेट ओसीसी को भ्रमित नहीं करेगा?हाइबरनेट: क्या मुझे हैशकोड() और बराबर() विधियों
5
A
उत्तर
3
यह अनुशंसा की जाती है कि आप व्यवसाय कुंजी समानता का उपयोग करके बराबर() और हैशकोड() लागू करें। व्यापार कुंजी समानता का अर्थ है कि बराबर() विधि केवल उन गुणों की तुलना करती है जो व्यवसाय कुंजी बनाते हैं। यह एक महत्वपूर्ण यह है कि असली दुनिया में हमारे उदाहरण की पहचान हैं (एक प्राकृतिक उम्मीदवार कुंजी)
तो है आप नहींequals()
hashcode()
में संस्करण संपत्ति को शामिल करना चाहिए देखें: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/persistent-classes.html#persistent-classes-equalshashcode
संबंधित मुद्दे
- 1. हैशकोड के लिए हैशकोड और बराबर
- 2. कैसे हाइबरनेट बराबर() और हैशकोड() का उपयोग करता है?
- 3. जेएक्सबी ऑब्जेक्ट्स - हैशकोड और बराबर
- 4. जावा: स्वचालित बराबर() और हैशकोड()
- 5. मुझे बराबर और हैशकोड विधियों को ओवरराइड करने की आवश्यकता कब होगी?
- 6. Google ऐप इंजन, जेडीओ, और बराबर/हैशकोड
- 7. ग्रहण बराबर()/हैशकोड() गेटर्स का उपयोग करें
- 8. जावा में, बराबर() और हैशकोड() बराबर क्यों होना चाहिए?
- 9. ऑब्जेक्ट में बराबर और हैशकोड परिभाषित क्यों किया गया था?
- 10. इकाई वर्गों के बराबर और हैशकोड या नहीं, यह प्रश्न
- 11. गेटर्स बराबर और हैशकोड में उपयोग किया जा सकता है?
- 12. जेपीए की बेसएन्टिटी में बराबर() और हैशकोड() विधियों को कैसे कार्यान्वित करें?
- 13. क्लॉवर कवरेज रिपोर्ट से मैं विधियों (हैशकोड और बराबर) को कैसे बाहर निकाल सकता हूं?
- 14. जेपीए और हाइबरनेट
- 15. स्केल में बराबर और हैशकोड को लागू करने के लिए मानक मुहावरे क्या है?
- 16. स्ट्रिंगबफर/स्ट्रिंगबिल्डर क्यों बराबर या हैशकोड ओवरराइड नहीं करता है?
- 17. हैशकोड के लिए जुनीट सिद्धांत/बराबर अनुबंध
- 18. जावा - ट्रीसेट और हैशकोड()
- 19. क्या jQuery के छिपाने और स्लाइडअप विधियों के बराबर हैं?
- 20. जावा हैशकोड को "मास्टर" हैशकोड
- 21. हाइबरनेट बराबर नहीं उदाहरण मापदंड
- 22. ऐरेलिस्ट - "समान" ऑब्जेक्ट्स जोड़ें (समान => बराबर, हैशकोड), थ्रेड
- 23. जब मैं बराबर() विधि को ओवरराइड करता हूं तो मुझे हैशकोड() को ओवरराइड क्यों करना चाहिए?
- 24. सिंगल डीएओ और जेनेरिक सीआरयूडी विधियों (जेपीए/हाइबरनेट + स्प्रिंग)
- 25. हाइबरनेट/जेपीए - एनोटेटिंग बीन विधियों बनाम फ़ील्ड
- 26. सी # के विस्तार विधियों के बराबर स्कैला?
- 27. हैशकोड विशिष्टता
- 28. शब्दकोश बनाम हैशकोड और बराबर में IEqualityComparer का उपयोग करने की क्षमता()
- 29. जावा हैश मैप ओवरराइड हैशकोड() और बराबर() कोई डेटा नहीं देता
- 30. वस्तुओं और बराबर होती है
हाँ, मैं मैंने इसे पढ़ा है। लेकिन चूंकि 'संस्करण' फ़ील्ड का उल्लेख नहीं किया गया है और इसके उद्देश्य को ध्यान में रखते हुए (अलग-अलग मानों का अर्थ अलग-अलग वस्तुओं का है) मैंने संदेह किया। लेकिन हाइबरनेट ने आवेदन में किसी और चीज के लिए 'संस्करण' का उपयोग न करने की सिफारिश की है। तो, जितना अधिक मैं इसके बारे में सोचता हूं उतना ही मुझे आश्वस्त हो जाता है कि 'संस्करण' ** ** को ** बराबर() 'और' हैशकोड() 'में शामिल नहीं किया जाना चाहिए। – wajda