2009-10-08 13 views
6

एक साधारण इकाई रिश्ते को देखते हुए:Hibernate को @OneToMany मैपिंग में जेनेरिक प्रकार का संग्रह कैसे मिलता है?

@Entity 
public class Single { 

    @OneToMany 
    public Set<Multiple> multiples; 
} 

हाइबरनेट कैसे पता लगाता है कि सामान्य प्रकार के गुणक एकाधिक हैं? मानक प्रतिबिंब एपीआई के साथ यह जानकारी असंभव है।

मैं स्रोत कोड देख रहा हूं, लेकिन वास्तव में नहीं पता कि कहां से शुरू करना है।

उत्तर

7

लेकिन प्रतिबिंब API का उपयोग करके पता लगाने के लिए संभव है। Field.getGenericType() पर एक नज़र डालें:

Type type = field.getGenericType(); 
if (type instanceof ParameterizedType) { 
    Type[] genericArguments = ((ParameterizedType) type).getActualTypeArguments(); 
} 
+0

आप सही हैं, लेकिन यह अजीब है: मैंने सोचा था कि जानकारी कार्यावधि में खो गया था। क्या यह आलेख प्रतिबिंब जेनिक्स पर पुराना है? http://www.artima.com/weblogs/viewpost.jsp?thread=208860 –

+0

उस लेख में मेरे द्वारा ऊपर पोस्ट किए गए कोड के समान कुछ उदाहरण हैं। रनटाइम पर कुछ जेनेरिक जानकारी खो जाती है; स्थैतिक रूप से घोषित क्षेत्र/विधि घोषणाएं नहीं हैं। मोड विवरण के लिए जावा जेनरिक एफएक्यू पर एक नज़र डालें: http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html – ChssPly76

+0

धन्यवाद! स्पष्ट अंतर सामान्य बनाम या सुपरक्लास को देखकर क्षेत्र बनाम सीधे देख रहा है। किसी कारण से, मैंने कभी भी मैदान को देखने का विचार नहीं किया। –

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