java - remove object from session in hibernate? -


संभव डुप्लिकेट:

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

मैं सत्र से ऑब्जेक्ट एक्स को कैसे निकाल सकता हूं, इसलिए अब उस विशेषता से संबद्ध नहीं है

मैंने saveOrUpdate के बजाय मर्ज का उपयोग करने का प्रयास किया और यह ठीक काम कर रहा है, लेकिन क्या यह saveOrUpdate जैसा है? मेरा मतलब है क्या मैं इस पर निर्भर करता हूं कि नए रिकॉर्ड जोड़ने या उन्हें अपडेट करने के लिए?

बहुत सारे प्रयासों के बाद, मैंने पाया है कि मर्ज का उपयोग प्रभावी रूप से इसे संभालने के लिए सबसे अच्छा तरीका है, और सहेजने के लिए नए उदाहरणों की देखभाल करने के लिए मुझे लगता है कि सबसे अच्छा तरीका यह करना है:

  if (X.getId () ! = नल) {वापसी हाइबरनेट टेम्पलेट। मेर्ज (एक्स); } Else {hibernateTemplate.saveOrUpdate (X); }  

इसलिए यदि यह सत्र का एक नया उदाहरण था, तो यह सेव ऑरअपडेट के माध्यम से किया जाएगा, और यदि वह समान पंक्तियों के लिए दोहराया उदाहरण है, तो यह मर्ज का उपयोग करके संभाला जा सकता है।


Comments