मैं अपने मॉडल में एक संग्रह है कि मेरे रूट डोमेन वस्तु की 'पिछले संस्करणों' का एक सेट होता है लोड किए बिना एक संग्रह में एक नया आइटम जारी रहती है कैसे। पिछले संस्करण इसलिए 'अपरिवर्तनीय' हैं और हम उन्हें कभी भी अपडेट नहीं करना चाहेंगे, और केवल वे पिछले संस्करणों को जोड़ना चाहते हैं। इसके अलावा 'संस्करण' डोमेन ऑब्जेक्ट काफी जटिल है और इसे पुनर्प्राप्त करने के लिए भारी डेटाबेस पहुंच का कारण बनता है।हाइबरनेट - पूरे संग्रह
जब मेरे पास इनमें से किसी एक ऑब्जेक्ट का नया संस्करण है, तो मैं इसे पूरे सेट को लोड किए बिना दूसरों के साथ सहेजना चाहता हूं।
क्यों हाइबरनेट हमेशा एक संग्रह को प्रारंभ करता है जब मैं केवल जोड़ सकते हैं या एक तत्व निकालना चाहते हैं: उन्नत पूछे जाने वाले प्रश्न इस पर कुछ सलाह है?
दुर्भाग्य से संग्रह API विधि वापसी मान को परिभाषित करता है जिसे केवल डेटाबेस को मारकर गणना की जा सकती है। इसमें तीन अपवाद हैं: हाइबरनेट
<bag>
,<idbag>
या<list>
मेंinverse="true"
के साथ संग्रह को आरंभ किए बिना घोषित कर सकता है; वापसी मूल्य हमेशा सच होना चाहिए।आप अतिरिक्त डेटाबेस यातायात से बचना चाहते हैं (यानी। प्रदर्शन महत्वपूर्ण कोड में), केवल कई-टू-वन संघों उपयोग करने के लिए अपने मॉडल refactor। यह लगभग हमेशा संभव है। फिर संग्रह पहुंच के स्थान पर प्रश्नों का उपयोग करें।
मैं इन सभी के लिए नया हूं और 100% सुनिश्चित नहीं हूं कि आपके मॉडल को केवल एक-से-एक संगठनों का उपयोग करने के लिए कैसे दोबारा तैयार किया जाए। क्या कोई मुझे एक ट्यूटोरियल में इंगित करने का उदाहरण दे सकता है ताकि मैं सीख सकूं कि यह मेरे मुद्दे को कैसे हल करेगा?
मुझे लगता है कि मुझे वास्तव में क्या चाहिए 1) संग्रह को लोड करने पर केवल मुख्य संशोधन (ऑडिट रिपोर्ट को छोड़कर) को पुनः प्राप्त करने के लिए 'हाइबरनेट फ़िल्टर' का उपयोग करने में सक्षम होना; और फिर 2) यदि यह सिर किसी ऑपरेशन द्वारा संशोधित किया जाता है (संग्रह में दो तत्वों का कारण बनता है) वर्तमान 'सिर' को अपडेट करने के लिए हाइबरनेट को बताएं (जैसे अब सिर नहीं है) और फिर डेटाबेस में नया संस्करण डालना। दुर्भाग्यवश, यदि हम इस दृष्टिकोण को लेते हैं तो हाइबरनेट को लगता है कि फ़िल्टर किए गए तत्व (पिछले संशोधन) अब मूल सेट से जुड़े नहीं हैं। अपरिवर्तनीय = 'सत्य' सेटिंग काम नहीं कर रही है। –
खुशी है कि हम मदद कर सकते हैं। यदि आपको कुछ जवाब पसंद हैं, तो आप उनके समय के लिए लोगों को धन्यवाद देने के लिए उनके लिए वोट दे सकते हैं (शीर्ष पर छोटे तीर दबाएं)। साथ ही, यदि कोई जवाब आपके लिए पर्याप्त है, यदि आप किसी और चीज पर जाते हैं, तो आप एक जवाब को 'स्वीकृत' के रूप में चिह्नित कर सकते हैं। – KLE