2013-07-03 9 views
7

क्या कोई एनोटेशन है जो मुझे याद आ रही है या क्या यह पुनर्प्राप्ति को हाइबरनेट करने के लिए एक सीमा है?आप नेस्टेड सेट कैसे प्राप्त करते हैं?

संस्थाओं:

class A { 
    Long id; 
    Set<B> b; 

    @ManyToMany(fetch = FetchType.EAGER) 
    @JoinTable(name = "A_B", joinColumns = @JoinColumn(name = "A_ID"), inverseJoinColumns = @JoinColumn(name = "B_ID") 
    public Set<B> getBs() { 
     return b; 
    } 

} 

class B { 
    Long id; 
    Set<C> c; 

    @ManyToMany(fetch = FetchType.EAGER) 
    @JoinTable(name = "B_C", joinColumns = @JoinColumn(name = "B_ID"), inverseJoinColumns = @JoinColumn(name = "C_ID") 
    public Set<C> getCs() { 
     return C; 
    } 

} 

DAOs:

class ADaoImpl {  
    public A load(Long id) { 
     return new A((A) session.load(A.class, id); 
    } 
} 

जब मैं एक एक लोड करने का प्रयास, मैं एक

Caused by: java.lang.NullPointerException 
at org.hibernate.engine.internal.StatefulPersistenceContext.getLoadedCollectionOwnerOrNull(StatefulPersistenceContext.java:853) 
+0

क्या आप हाइबरनेट संस्करण का उपयोग कर रहे हैं? – yair

+0

कृपया पूर्ण स्टैक ट्रेस पोस्ट करें (कम से कम अपने कोड तक)। – yair

+0

वैसे भी यह मुझे हाइबरनेट बग की तरह दिखता है। मैंने अपनी बग डीबी की खोज की लेकिन एनपीई के साथ 'स्टेटफुलपर्सिस्टेंस कॉन्टेक्स्ट.जेवा: 853' में कुछ भी नहीं। आप तब एक बग फाइल कर सकते हैं। – yair

उत्तर

1

मुझे लगता है कि यह पूरा अपवाद सही नहीं है मिल सकता है?

कक्षा ए में सेटटर कहां है? कक्षा ए में बी संग्रह दोस्ताना स्कॉप्ड है तो हाइबरनेट इसके मूल्य को लिखने/इंजेक्ट करने में सक्षम नहीं होगा। कक्षा बी में सी संग्रह के लिए भी यही है

कृपया, अपने hibernate.xml और किसी अन्य कॉन्फ़िगरेशन क्लास को यहां कॉपी करें। हाइबरनेट/जावा संस्करण भी महत्वपूर्ण हैं।

+0

यह सही अपवाद है। और आप मान सकते हैं कि डीएओ सही तरीके से काम कर रहे हैं और सभी आवश्यक गेटर और सेटर विधियां – stackoverflow

+0

यदि यह केवल उचित सेटटर की कमी थी, तो हाइबरनेट एनपीई नहीं फेंक देगा ... – yair

+0

मुझे नहीं पता कि तुम क्यों कह रहे हो कि, लेकिन अगर यह सच है, तो यह अभी भी हाइबरनेट बग होगा। (जब तक हाइबरनेट इस व्यवहार को दस्तावेज न करें - जो शायद यह नहीं करता है)। – yair

6

मुझे इस मुद्दे के समान ही एक मुद्दा था, जिसमें मैंने नेस्टेड सेट थे, और प्रत्येक के लिए हैशकोड विधियां स्टैक ट्रेस में दिखाई गईं। हैशकोड विधियों में, उन्होंने एक दूसरे को संदर्भित किया, इसलिए मैंने हैशकोड विधियों में प्रत्येक ऑब्जेक्ट का संदर्भ हटा दिया, और अब मुझे यह अपवाद नहीं मिला

+0

मेरी कक्षा में भी सेट है और हैशकोड और बराबर में एक दूसरे को संदर्भ हटाकर एक ही अपवाद का समाधान किया। – Junjie

+0

आपने इसे किस जगह से बदल दिया? –

+0

आपको बहुत धन्यवाद, मेरे पास लोम्बोक से '@ डेटा' था और यह सभी गुणों का उपयोग करके मेरी 'हैशकोड' विधि उत्पन्न कर रहा था। मैंने अभी '@EqualsAndHashCode (बहिष्कृत = {"mySet"} जोड़ा है) और यह काम किया! – tehCivilian

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