रिकॉर्ड के बैच को हटाने का प्रयास करते समय, केवल विषम पंक्तियां हटा दी गई हैं!यह ScalaQuery कथन केवल विषम पंक्तियों को क्यों हटाता है?
val byUser = Orders.createFinderBy(_.userID)
byUser(id).mutate(_.delete)
यदि मैं इसके बजाय रिकॉर्ड प्रिंट करता हूं, तो मुझे पंक्तियों की सही संख्या मिलती है।
byUser(id).mutate{x => x.echo}
मैंने इस तरह के मुद्दे के आसपास काम किया, जो वांछित एसक्यूएल उत्पन्न करता है।
(for{o <- Orders if o.userID is id.bind } yield o).delete
लेकिन, म्यूटेट संस्करण केवल विषम पंक्तियों को कैसे प्रभावित करता है या कैसे?
हालांकि मुझे नहीं पता कि इस विशेष मामले में क्या चल रहा है, यह लिंक की गई सूचियों के साथ एक बहुत ही आम समस्या है: जब आप हटाने की कोशिश करते हैं पुनरावृत्ति करते समय, आप एक को हटाते हैं, फिर एक को फिर से करें, फिर एक हटाएं, आदि। अपनी आधा सूची शेष छोड़ दें। एक परिवर्तनीय संग्रह पर कोई भी इटरेटर इस समस्या से पीड़ित हो सकता है, यह कैसे बनाया गया है इसके आधार पर। मुझे नहीं पता कि यहां आपके लिए वैकल्पिक रणनीतियों क्या उपलब्ध हैं - लिंक्ड सूचियों के साथ, आप केवल उन्मूलन करके समस्या को हल करते हैं और हटाने को पूरी सूची के माध्यम से हटा देते हैं। –
@RexKerr कुछ जो आप वर्णन कर रहे हैं उसके समान होना चाहिए। विकल्प एक ऐसी क्वेरी बनाना है जो MutatingUnitInvoker (create.cinderBy जैसे तैयार कथन अभिव्यक्तियों द्वारा उत्पन्न क्वेरी का प्रकार और पैरामीटर्स [टी] के माध्यम से बाध्य अभिव्यक्तियों के लिए) – virtualeyes
@RexKerr ऐसा लगता है कि आपको एकमात्र उत्तर मिल गया है, मैं इसे इस तरह पोस्ट करेंगे और कुछ वोट प्राप्त करेंगे :) –