2010-07-28 11 views
6

मैं कैसे बच्चे वस्तु grails में एक hasOne रिश्ते में उदाहरण के लिए हटा देना चाहिए हटाया जा रहा है मैं हमेशा एक ही अपवाद हटा देता हूं हटाए गए ऑब्जेक्ट को दोनों तरीकों से कैस्केड द्वारा बचाया जाता है। और एक और के पास मेरे पास कोई गतिशील विधियां हैं (जैसे addTo और निकालें के लिए हैमनी) है? कोई मदद?एक रिश्ते और grails

+0

आप स्थापित करने की कोशिश की face.nose = बातिल है; – Emyr

+0

हां भी वह किया। लेकिन इसका कोई उपयोग नहीं है..जब तक मुझे एक ही अपवाद मिल जाएगा – prabhap

+1

क्या आपको वास्तव में 'स्थिर संबंधित है = फेस' की आवश्यकता है? –

उत्तर

0

इस प्रकार अपने वर्ग बनाने का प्रयास करें:

class Face { 
     Nose nose 
} 

class Nose {  
     static belongsTo = Face 
} 

फिर कोशिश को हटाने के लिए:

def f = Face.get(1) 
f.nose.delete() 
f.delete() 
+1

मुझे लगता है कि चेहरा केवल नाक को हटाया नहीं जाना चाहिए। –

4

आप

face.nose = null 
face.save() 
nose.delete() 

की कोशिश कर सकते आप केवल नाक तो संपत्ति चेहरे को हटाते हैं। नाक अभी भी सेट है। Face.save() का बाद में कॉल नाक को बचाएगा।

यदि आप केवल face.nose = null (सहेजे बिना) सेट करते हैं तो परिवर्तन डेटाबेस में सहेजा नहीं जाता है। फेस प्राप्त करने के लिए डेटाबेस के बाद की एक क्वेरी आपको नाक सेट के साथ एक चेहरा देगी और एक सेव() इसे बचाएगी।

-1

कोशिश इस

noseId = face.nose.id 
face.nose = null 
nose.get(noseId).delete(flush:true) 
संबंधित मुद्दे