मैं एक सामान्य वर्ग भी है कि एक मैप किए गए सुपर वर्ग के लिए एक निजी क्षेत्र है कि एक ही प्रकार के किसी अन्य वस्तु के लिए सूचक रखती है कि करने के लिए एक सूचक के लिए जेपीए एनोटेशन को संभालने के लिए:कैसे एक सामान्य इंटरफ़ेस
@MappedSuperclass
public abstract class MyClass<T extends MyIfc<T>>
implements MyIfc<T>
{
@OneToOne()
@JoinColumn(name = "previous", nullable = true)
private T previous;
...
}
मेरी समस्या यह है कि ग्रहण एक फ़ाइल में एक त्रुटि दिखा रहा है, "लक्ष्य इकाई" टी "पिछले के लिए एक इकाई नहीं है।" माईआईएफसी के सभी कार्यान्वयन वास्तव में, संस्थाएं हैं। मुझे यह भी जोड़ना चाहिए कि MyClass से प्राप्त प्रत्येक ठोस कार्यान्वयन टी के लिए एक अलग मान का उपयोग करता है (क्योंकि टी स्वयं है) इसलिए मैं "targetEntity" विशेषता का उपयोग नहीं कर सकता।
मुझे लगता है कि अगर कोई जवाब नहीं है तो मुझे इस जेपीए एनोटेशन को माइक्लास के सभी ठोस उप-वर्गों में ले जाना होगा। यह सिर्फ लगता है जैसे जेपीए/हाइबरनेट को यह समझने के लिए पर्याप्त होना चाहिए कि यह रन-टाइम पर सभी काम करेगा। मुझे आश्चर्य है कि अगर मुझे किसी भी तरह से इस त्रुटि को अनदेखा करना चाहिए।
पुष्टि है कि यह असंभव है के लिए धन्यवाद। फिर भी एक और कारण है कि कार्यान्वयन विरासत आपके इच्छित तरीके से कभी काम नहीं करती है। मैं अमूर्त सुपरक्लास से जेनेरिक प्रकारों के सभी संदर्भों को हटाने जा रहा हूं और सभी ठोस कार्यान्वयन में उन्हें डुप्लिकेट कर रहा हूं। मुझे आश्चर्य है कि क्या मैं एनोटेशन के बजाय एक्सएमएल मैपिंग फाइलों का उपयोग करना बेहतर कर दूंगा? – HDave
@HDave मैं नहीं सोचता * यह कुछ भी बदलेगा, मैं उम्मीद करता हूं कि आपका जेपीए प्रदाता रनटाइम पर शिकायत करे। –
भले ही मुझे लगता है कि संकलन-प्रकार प्रकार-सुरक्षित इकाई संबंध दिमाग की शांति के लायक नहीं हैं।यह सिर्फ बदबू आ रही है कि मुझे आज कोड के इस स्निपेट को 17 ठोस इकाई कार्यान्वयन में कॉपी करना है! – HDave