2011-09-12 6 views
15

यह सही है कि मैं EntityManager#merge() उपयोग करने के लिए, जब तक कि मैं केवल संलग्न कामयाब संस्थाओं से निपटने की जरूरत है कभी नहीं? दूसरे शब्दों में, एक संलग्न कामयाब इकाई पर merge() बुला कोई प्रभाव नहीं है?जेपीए: संलग्न इकाइयों के लिए कभी भी आवश्यक विलय कर रहा है?

या वहां परिस्थितियों में जहां एक उद्देश्य पूरा होगा विलय कर रहे हैं? मुझे लगता है ऐसा नाम है जो मैं इसे इस्तेमाल कर सकते हैं एक OptimisticLockException से निपटने के लिए सुझाव देते हैं ... :)

संपादित: बहुत सरल शब्दों में, एक कामयाब इकाई की मेरी समझ है कि उसके गुण/क्षेत्रों के संशोधनों मिलता है लेनदेन के अंत में डीबी के लिए जारी रखा।

उत्तर

15

विनिर्देश कहा गया है कि:

एक्स है एक प्रबंधित इकाई है, यह मर्ज आपरेशन द्वारा नजरअंदाज कर दिया है अगर, हालांकि, मर्ज आपरेशन संस्थाओं एक्स से रिश्तों के द्वारा संदर्भित करने के लिए सोपानी है इन रिश्तों अगर गया झरना तत्व मूल्य cascade=MERGE या cascade=ALL एनोटेशन के साथ एनोटेट।

+0

Thx! प्रबंधित == संलग्न? क्या आप कृपया कैस्केड-टू-रेफरेंस-एंटिटीज के बारे में विस्तृत जानकारी दे सकते हैं (या मुझे पढ़ने के लिए सामग्री की ओर इशारा करते हैं)? मुझे लगता है कि एक संलग्न इकाई के लिए, सभी संदर्भित इकाइयां भी संलग्न हैं ... – Hank

+0

प्रबंधित है, हां। संदर्भ सामग्री ? जेपीए स्पेक शायद ... बस "विलय" के लिए इसमें खोजें। – DataNucleus

+0

निर्भर करता है कि आप किस जेपीए कार्यान्वयन का उपयोग कर रहे हैं लेकिन 'प्रबंधित! = संलग्न'। यदि आप किसी इकाई को संदर्भ से बाहर भेजते हैं (एक सेवा कॉल के साथ कहें) और इसे बाद में प्राप्त करें, तो यह दृढ़ता संदर्भ से जुड़ा होगा, लेकिन तब तक इसे फिर से प्रबंधित नहीं किया जाता जब तक कि 'मर्ज' नहीं कहा जाता है। [EntityManager.Contains] (http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html#contains (java.lang.Object)) आपको बताती हैं कि वस्तु प्रबंधित किया जाता है जाएगा। –

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