- मैं कोई स्पष्ट प्राथमिक कुंजी (संयुक्त या अन्यथा) के साथ एक SQL डेटाबेस में देखा गया
- मैं जेपीए के माध्यम से
मैंने पढ़ा है कि मुझे जेपीए में विचारों का इलाज करने में सक्षम होना चाहिए जैसे कि मैं तालिकाओं का इलाज करता हूं (@Table एनोटेशन इत्यादि का उपयोग करके)। हालांकि प्राथमिक कुंजी के बिना मुझे हर कॉलम से प्रभावी रूप से एक समग्र कुंजी बनाना पड़ता है (वास्तव में, यह हाइबरनेट के रिवर्स-इंजीनियरिंग उपकरण में डिफ़ॉल्ट रूप से ऐसा लगता है)।जब जेपीए
हालांकि अगर मैं ऐसा करता हूं तो अवांछनीय दुष्प्रभाव होते हैं। ईजी।
आप सभी कोड के बजाय प्राथमिक कुंजी के गुण विचारों की ओर इशारा करते लिखने के लिए होने:।
myViewObject.getPrimaryKey() getFirstName()
नहीं "findBy उपयोग करने के लिए सक्षम किया जा रहा ... "वसंत रिपोजिटरी पर विधियां (चूंकि वह विशेषता दृश्य के" पहचानकर्ता "का हिस्सा है और वास्तव में इसके गुणों में से एक नहीं है)।
मेरा प्रश्न है: मैं इस तरह के विचारों को कैसे मैप कर सकता हूं क्योंकि मैं आसानी से जेपीए का उपयोग करके अपने गुणों तक पहुंच सकता हूं?
नोट: मुझे यह जानकर बहुत खुशी हुई कि मैं पूरी तरह से गलत दृष्टिकोण का उपयोग कर रहा हूं। ऐसा लगता है कि इस तरह की एक आम समस्या एक बेहतर समाधान होने के लिए बाध्य है।
एक चाल जो मैं नियोजित करता हूं, यह देखने के लिए संभावित प्रश्नों का विश्लेषण करना है कि कितने रिकॉर्ड लौटने की संभावना है और यह देखने के लिए कि क्या कोई ऐसा क्षेत्र है जो उन सभी स्थितियों में सभी रिकॉर्ड के लिए अद्वितीय रहेगा। यदि आप ऐसा परिदृश्य पा सकते हैं, तो आप उस फ़ील्ड को प्राथमिक कुंजी के रूप में निर्दिष्ट कर सकते हैं, भले ही यह वास्तव में प्राथमिक कुंजी न हो क्योंकि ओआरएम केवल एक क्वेरी के परिणामों के बीच विशिष्टता की परवाह करता है। लेकिन ध्यान दें कि आप दूसरे स्तर के कैश का उपयोग करने में सक्षम नहीं होंगे। ऐसे मामलों में जहां यह चाल लागू नहीं है, मैं प्राथमिक कुंजी को शामिल करने के लिए दृश्य के लिए क्वेरी को संशोधित करता हूं। – manish
'getFirstName()' जैसी प्रतिनिधि विधियों को लिखने से रोकने के लिए कुछ भी नहीं है जो इसे वापस लौटाता है .getPrimaryKey()। GetFirstName() '। फिर आपको केवल एक बार लंबे संस्करण को लिखना होगा। गलत दृष्टिकोण होने के नाते, हमारे पास हमारे आवेदन में 400 से अधिक संस्थाएं/सारणी हैं और हमारे पास एक एकल व्यू-एंटिटी नहीं है। मैंने एक बार एक बार उपयोग करने की कोशिश की क्योंकि मैंने सोचा था कि इससे मदद मिलेगी, लेकिन इससे समस्याएं उत्पन्न हुईं, इसलिए मैंने जेपीक्यूएल में एक ही 'व्यू' बनाया जिसने एक ही काम किया, और मुझे और अधिक लचीलापन दिया। – DuncanKinnear