2010-12-15 19 views
8

की संपत्ति के लिए कई मानचित्रण के लिए मैं एक सुपर क्लास Questions और उसके उपवर्ग MultipleChoiceQuestionsएक सुपर क्लास

सुपर क्लास एक क्षेत्र activity

मैं एक Set<MultipleChoiceQuestions> बना सकते हैं और का उपयोग कर OneToMany एनोटेशन का उपयोग करना चाहते है है mappedBy = "activity"

जैसे

org.hibernate.AnnotationException: mappedBy reference an unknown target entity property 

हालांकि, यह ठीक काम करता है अगर मैं सुपर क्लास संस्थाओं का एक सेट बनाने के लिए,

उदहारण के लिए:

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "activity") 
private Set<NQIMultipleChoiceQuestions> mcqQuestions = new HashSet<NQIMultipleChoiceQuestions>(); 

मैं इस त्रुटि हो रही है

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "activity") 
private Set<NQIQuestions> questions = new HashSet<NQIQuestions>(); 

क्या सुपरक्लास की संपत्ति पर नक्शा लगाने का कोई तरीका है?

+0

@ सहिल, जो दो पंक्तियां आपने दिखायीं - जहां आपने दावा किया कि पहला व्यक्ति काम नहीं करता है, लेकिन दूसरा वाला - केवल 'सेट' के परिवर्तनीय नाम में भिन्न होता है। –

+0

@binil: ya .. वास्तव में दूसरे मामले में, प्रश्न आधार वर्ग है, जबकि mcqQuestion subclass है। – shailesh

+0

@OneToMany (fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "गतिविधि") \t निजी सेट प्रश्न = नया हैशसेट (); – shailesh

उत्तर

14

मिले इस के लिए समाधान ... :)

हम सिर्फ targetEntity को परिभाषित करते हुए इस लक्ष्य को हासिल कर सकते हैं =? OneToMany परिभाषा ..

जैसे ..

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "activity" , targetEntity=NQIQuestions.class)  
private Set<NQIMultipleChoiceQuestions> mcqQuestions = new HashSet<NQIMultipleChoiceQuestions>(); 
+7

का सुपरक्लास है लेकिन क्या सेट में अब अन्य उपप्रकारों की ऑब्जेक्ट्स भी शामिल नहीं हैं? –

+0

दुर्भाग्यवश, यह सच है। हाइबरनेट के साथ एक संभावित समाधान '@Where (clause = "...")' का उपयोग करने के लिए एक उपयुक्त जहां-खंड केवल सही उप प्रकार (ओं) को लोड करने के लिए होगा। –

0

शायद आप हाइबरनेट उपयोग करें और यह इस सुविधा (Hibernate ORM HHH-4233: cant bind a child using mappedby relating to a parent attribute(polymorphism) समर्थन नहीं करता। सुविधा विवादास्पद कारणों से अस्वीकार कर दिया है। वहाँ एक टिप्पणी से भी नहीं है निकोलस स्टुअर्ट जो विषय के बारे में और अधिक लिंक, यह एक कुछ समाधान देने सहित प्रदान करता है:।। Chris Wong's Development Blog: Polymorphic one to many relationships in Hibernate

एक बार जब हम जानते हैं कि यह समस्या सिर्फ हाइबरनेट है, हम कुछ और करने के लिए स्विच कर सकते हैं OpenJPA, EclipseLink suppo करना आरटी। यहां सूचीबद्ध करने के लिए और अधिक ढांचे हैं, तो कृपया एक टिप्पणी जोड़ें।

संबंधित मुद्दे