2011-01-12 19 views
7

के साथ आईडी की सूची द्वारा एकाधिक रिकॉर्ड हटाएं मैं एक निश्चित इकाई के एकाधिक रिकॉर्ड्स को हटाना चाहता हूं जहां इकाई की आईडी मेरे पास आईड्स की सूची में है। मैं एनएचबीरनेट के साथ सी # में इस क्रिया को करने की कोशिश कर रहा हूं।एचक्यूएल कथन

मेरे पास आईडी की एक सूची है।

var idList = new List<Guid>() { Guid.NewGuid(),Guid.NewGuid()}; 

_session.CreateQuery("DELETE FROM MapsItem o WHERE o.Id = IN :idList") 
    .SetParameterList("idList", idList) 
    .ExecuteUpdate(); 

यह निम्न त्रुटि में परिणाम:

Exception of type 'Antlr.Runtime.NoViableAltException' was thrown. near line 1, column 33 [DELETE FROM Album o WHERE o.Id = IN :idList] 

क्वेरी एक HQL बयान है

मैं इस के समान कुछ करना चाहता हूँ।

एचक्यूएल क्वेरी में क्या गलत है।

उपरोक्त प्रश्न के दोनों प्रदान किए गए उत्तर सही समाधान देते हैं। हालांकि, जब मैं एचक्यूएल निष्पादित करता हूं, तो त्रुटि इस प्रकार है:

could not insert/select ids for bulk delete[SQL: insert into #MapsItem SELECT mapsitem0_.Id as Id FROM MapsItem mapsitem0_ inner join BaseEntity mapsitem0_1_ on mapsitem0_.Id=mapsitem0_1_.Id WHERE Id in (? , ? , ? , ? , ? , ?)] 

इकाई MapsItem इकाई बेसइन्टिटी से प्राप्त होती है। दोनों डेटाबेस में एक संपत्ति आईडी है। एसक्यूएल क्वेरी निष्पादित नहीं की जा सकती है, क्योंकि WHERE खंड में कॉलम आईडी अजीब है।

मैं इस समस्या को कैसे हल कर सकता हूं?

DELETE FROM myObject o WHERE o.Id IN :idList 
+0

मैं query.ExecuteUpdate – Silviu

+1

का उपयोग कर आप एसक्यूएल में वापस आने की जरूरत है बहु-अपडेट व्युत्पन्न तत्वों का प्रयास करते समय एक ही समस्या (अस्पष्ट स्तंभ नाम 'आईडी') सामना करना पड़ा! – Rippo

उत्तर

5

बराबर के चिह्न निकालें। यह ऐसा कुछ होना चाहिए। और मैं आपको स्ट्रिंग का उपयोग करने का सुझाव दूंगा। इसके बजाय फोर्मैट।

var idList = new List<Guid>() { Guid.NewGuid(),Guid.NewGuid()}; 

_session.CreateQuery(string.Format("DELETE FROM myObject o WHERE o.Id IN  
({0})",string.Join(",",idList.ToArray()))).ExecuteUpdate(); 
+0

यह काम नहीं करता है भले ही() को चारों ओर जोड़ा जाएगा: idList – Gutek

1

हटाएँ बराबर चिह्न के लिए और भी अपने inquery गलत है:

+0

मैंने यह इंगित करने के लिए प्रश्न संपादित किया कि त्रुटियां क्या होती हैं – Jan

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