2013-03-08 11 views
6

मैं किसी मौजूदा एप्लिकेशन को ऑब्जेक्ट्स के डेटाबेस स्टोरेज में कनवर्ट करने के लिए एंड्रॉइड के लिए ऑर्मेलाइट का उपयोग कर रहा हूं। मेरे पास एक काफी जटिल ऑब्जेक्ट डेटा स्ट्रक्चर है जिसे मुझे डेटाबेस में लाने की आवश्यकता है और शुरुआत में कम से कम मैं इसे पूरा करने के लिए ऑब्जेक्ट स्ट्रक्चर को संशोधित नहीं करना चाहता हूं। इस मौजूदा संरचना में मेरे पास नेस्टेड विदेशी वस्तुओं के कुछ स्तर हैं।कोई विदेशीऑटोडेलेट क्यों नहीं है?

मेरा प्रश्न, विदेशीऑटोक्रेट स्वचालित रूप से स्वैच्छिक रूप से काम करता प्रतीत होता है। जब मैं डेटाबेस में ऑब्जेक्ट बना देता हूं जिसमें विदेशी वस्तुएं होती हैं, तो स्वयं के पास चार या पांच स्तर तक विदेशी वस्तुएं होती हैं, तो वस्तु वाले मास्टर के लिए एकल निर्माण सभी विदेशी वस्तुओं को इन सभी स्तरों पर नीचे रखता है।

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

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

आशा है कि सवाल किसी भी प्रतिक्रिया के लिए पहले से ही समझ में आता है और धन्यवाद।

+0

क्यों इतना लंबा प्रश्न है? आपको वास्तव में आवश्यक चीज़ों को समझने में मुझे 15 मिनट लग गए। मुझे लगता है कि रॉबक्रॉल ने समाधान दिया है इसलिए मुझे एक देने की ज़रूरत नहीं है –

उत्तर

7

बच्चे की विदेशी कुंजी डेटाबेस फ़ील्ड घोषणा में कॉलम परिभाषा पैरामीटर जोड़ें। इस उदाहरण में दस्तावेज़ माता-पिता है। DocumentEntity कक्षा का नाम है लेकिन तालिका का नाम "दस्तावेज़"

@DatabaseField(canBeNull = false, foreign = true, index = true, foreignAutoRefresh = true, columnDefinition = "integer references document(id) on delete cascade") 
private DocumentEntity document; 
संबंधित मुद्दे