2009-06-25 16 views
6

जब मैं एक वस्तु को अद्यतन करने की कोशिश मैं निम्नलिखित अपवाद हो रही है:हाइबरनेट अपवाद मदद: TransientObjectException

org.hibernate.TransientObjectException: वस्तु को संदर्भित एक न सहेजा गया क्षणिक उदाहरण - निस्तब्धता से पहले क्षणिक उदाहरण बचाने: .... ..

क्या कोई मदद कर सकता है ???

ऑब्जेक्ट जिसे मैं अद्यतन करने का प्रयास कर रहा हूं, में मैपिंग फ़ाइल में 'आलसी' विशेषता झूठी है। ऐसा लगता है कि हाइबरनेट मुझे उम्मीद कर रहा है कि वह अपडेट को फ्लश करने से पहले बाल वस्तुओं को सहेजने की उम्मीद कर रहा है ???

संपादित करें (जोड़ा गया):

<hibernate-mapping> 
    <class name="utils.message.Message" table="messages"> 
     <id name="id" column="message_id"> 
      <generator class="native" /> 
     </id> 
     <property name="message_text" column="message_text" /> 
     <property name="message_file" column="message_file" /> 
     <property name="is_active" column="is_active" type="boolean"/> 
     <property name="is_global" column="is_global" type="boolean"/> 
     <property name="start" column="start" type="java.util.Date"/> 
     <property name="end" column="end" type="java.util.Date"/> 
     <property name="last_updated" column="last_updated" type="java.util.Date"/>  

     <many-to-one name="last_updated_by" class="utils.user.User" column="last_updated_by" lazy="false"/> 
     <many-to-one name="healthDepartment" class="utils.healthdepartment.HealthDepartment" column="health_department_id" lazy="false"/> 

    </class> 
</hibernate-mapping> 
+0

मैपिंग फ़ाइल में झरना संपत्ति का उपयोग कर अपनी समस्या का समाधान कर सकता की तरह लगता है ?? बस यह सुनिश्चित न करें कि मेरे लिए कौन सी शैली उपयुक्त है। (हालांकि मुझे लगता है कि केवल डिलीट-अनाथ का उपयोग करना मुझे चाहिए)। यह एक नौसिखिया के नजरिए से हाइबरनेट डॉक्स को समझने के लिए थोड़ा मुश्किल हो सकता है। – Rafael

+0

आप अपने hibhernate मैपिंग फ़ाइल या एनोटेशन की प्रासंगिक भागों पोस्ट कर सकते हैं? – skaffman

उत्तर

0

ऐप एक वसंत वातावरण में है। ठीक करें: हाइबरनेट वातावरण के भीतर से अद्यतन चलाने के लिए।

+0

इसका क्या अर्थ है? यह एक जवाब कैसे है? –

15

TransientObjectException तब होता है जब आप एक वस्तु किसी अन्य वस्तु है कि क्षणिक होता है को संदर्भित जो बचाने (अर्थात यह "डिफ़ॉल्ट" पहचानकर्ता मूल्य, अक्सर अशक्त है) और फिर सत्र फ्लश। यह आमतौर पर तब होता है जब आप नई वस्तुओं का एक संपूर्ण ग्राफ बना रहे हैं लेकिन उन सभी को स्पष्ट रूप से सहेजा नहीं है। इसके आसपास काम करने के दो तरीके हैं:

  1. जैसा कि आप सुझाव देते हैं, आप अन्य संबंधित वस्तुओं को सहेजने के लिए कैस्केडिंग का उपयोग कर सकते हैं। हालांकि, कैस्केडिंग वास्तव में टीओई के लिए कामकाज के रूप में नहीं बल्कि वास्तविक वस्तुओं के समूह को बचाने के लिए एक सुविधा के रूप में लक्षित किया गया था जो अक्सर एक साथ छेड़छाड़ की जाती है। यदि आप अपने ऑब्जेक्ट को अपने संबंधित डेटा के पूर्ण सेट के बिना अलग करते हैं और फिर इसे कैस्केडिंग सक्षम के साथ सहेजते हैं, तो आप अनजाने में उस डेटा को हटा सकते हैं जिसे आप खोना नहीं चाहते हैं।
  2. सुनिश्चित करें कि आपके ग्राफ में सभी क्षणिक वस्तुओं को आपके काम की इकाई के हिस्से के रूप में स्पष्ट रूप से सहेजा गया है। यह वास्तव में सिर्फ कैसे समझ आपके आवेदन एक वस्तु ग्राफ बनाने वाले हैं और क्या संस्थाओं क्षणिक होते हैं और जो लगातार या अलग हो सकता है का एक मामला है।

मैं हाइबरनेट डॉक्स से इस पूरे अध्याय को पढ़ने के लिए पूरी तरह से क्षणिक, लगातार की शब्दावली को समझने और अलग करने के लिए सिफारिश करेंगे:

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/objectstate.html

+1

उपरोक्त यूआरएल टूटा हुआ है; यहां नया एक @ http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/objectstate है।एचटीएमएल – ManuPK

0
एक कई-से-एक संबंध के साथ

, ऐसा नहीं है हाइबरनेट के लिए दृढ़ता संचालन को कैस्केड करने के लिए उपयुक्त रहें, क्योंकि "एक" अवधारणात्मक रूप से कई अन्य लोगों के बीच साझा की गई इकाई है। इस प्रकार का रिश्ता "बाल वस्तु" नहीं है, जैसा कि आपने इसे रखा है।

आप स्पष्ट रूप से संबंध पर झरना विशेषता सेटिंग करके इस व्यवहार को ओवरराइड कर सकते हैं, या आप मैन्युअल रूप से कई-से-एक संबंध के दूसरे छोर बच सकते हैं।

+0

स्काफमैन, स्पष्टीकरण के लिए धन्यवाद। मैंने बस brd6644 द्वारा सुझाए गए दस्तावेज़ को पढ़ा। इससे हाइबरनेट की कुछ मौलिक अवधारणाओं को बेहतर ढंग से समझने में मदद मिली। आखिरकार, मुझे कुछ मदद की ज़रूरत है कि संदेश के साथ जुड़े उपयोगकर्ता/एचडी पर ऑपरेशन को कैस्केड किए बिना संदेश को अपडेट करने में सक्षम होना है। – Rafael

3

दोस्त उपयोग संपत्ति मैपिंग में "कैस्केड = सत्य"। सब होगा अच्छी तरह से ... वि लड़के

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