दुर्भाग्यवश, अब आप जो कर रहे हैं उससे बेहतर तरीका नहीं है। जो भी आप वर्णन कर रहे हैं, उसे करने के लिए आपको विधि को ओवरराइड करना होगा, क्योंकि आपके जेपीए एनोटेशन को कंक्रीट क्लास के लिए विशिष्ट जानकारी की आवश्यकता होगी।
जेपीए एनोटेशन के साथ, आपके पास वास्तव में दो विकल्प होते हैं - आप विधियों को एनोटेट कर सकते हैं, या आप गुणों को एनोटेट कर सकते हैं। हमारी परियोजना पर हमने तरीकों के बजाय एनोटेटिंग गुणों पर मानकीकृत किया है, लेकिन यह आपकी मदद नहीं करेगा, क्योंकि गुण संभवतः कंक्रीट वर्ग का हिस्सा हैं। (यदि वे किसी भी तरह से सुपर-क्लास में साझा किए जाते हैं, तो आपको वास्तव में विधियों को एनोटेट करने और उन्हें ओवरराइड करने की आवश्यकता होगी)।
अपनी स्कीमा को देखे बिना सिफारिश करना मुश्किल है, लेकिन यदि आपकी इकाई वर्गों में इतनी आम बात है कि वे सुपर-क्लास में कई गुण साझा करते हैं - शायद वे एक ही टेबल में संग्रहीत हो सकते हैं, शायद अलग-अलग प्रकार कॉलम?
या वैकल्पिक रूप से यदि वे लगभग समान नहीं हैं, तो क्या आप प्रत्येक ठोस वर्ग में सामान्य गुणों को पुन: उत्पन्न कर सकते हैं? सुपर क्लास में सामान्य गुणों को कैप्चर करने की कोशिश करके आप खुद को बचाने के बजाय खुद को और अधिक काम कर सकते हैं। चूंकि आपको ठोस वर्गों में उन्हें व्यक्तिगत रूप से एनोटेट करना होगा, इसलिए उन्हें ठोस वर्गों में घोषित करें। यदि आपको इन गुणों के साथ बातचीत करने वाली सामान्य विधियों की आवश्यकता है, तो उन कार्यों को कैप्चर करने के लिए एक अलग उपयोगिता वर्ग उत्तर हो सकता है।
हमारी परियोजना पर हम कभी कभी संस्थाओं के लिए एक आम सुपर क्लास का उपयोग करते हैं, लेकिन यह संस्था के बारे में कुछ मेटा डेटा कैप्चर करता है - कुछ भी नहीं है कि हठ तर्क को प्रभावित करेंगे। इसलिए, अमूर्त वर्ग में कोई जेपीए एनोटेशन की आवश्यकता नहीं होती है (न ही वे समझ में आती हैं)।
स्रोत
2010-02-04 00:16:09
मैं भी जोड़ने के लिए कारण है कि मैं पहली जगह में ठोस उपवर्गों में एनोटेशन बनाने के लिए आवश्यक है क्योंकि वे JAXB में JPA और तत्व के नाम में अलग तालिका नामों का उपयोग किया गया था चाहता था। इस मामले में सुपरक्लास भी सामान्य है। – HDave