में डिस्टिंट का चयन करें मैं स्लिम 1 का उपयोग कर रहा हूं, और मुझे किसी संबंधित तालिका में किसी शर्त से मेल खाने वाली सभी इकाइयों को देखने के लिए एक क्वेरी में फ़िल्टर लागू करने में सक्षम होना चाहिए।स्कैला स्लिक
यह उदाहरण स्लिक प्रलेखन का उपयोग कर पता चलता है कि मैं क्या करने के लिए कोशिश कर रहा हूँ (यह एक काल्पनिक उदाहरण है कि मेरी स्थिति के करीब है है)।
यहां, मैं सभी कॉफ़ी चाहता हूं जो पश्चिम तट पर आपूर्तिकर्ताओं द्वारा प्रदान किए जाते हैं। मैं चाहता हूँ कॉफी केवल, मैं सिर्फ आपूर्तिकर्ता है, वहाँ नेविगेट फ़िल्टर लागू करने में दिलचस्पी है:
val westCoast = Seq("CA", "OR", "WA")
val implicitInnerJoin = for {
c <- Coffees
s <- Suppliers if c.supID === s.id && s.state inSet westCoast
} yield c
यह ठीक काम करता है, लेकिन यह कॉफी नकल होगा अगर वहाँ आपूर्तिकर्ता तालिका में एक से अधिक मैच है।
स्पष्ट समाधान एक एसक्यूएल डिस्टिंट करने के लिए सामान्य एसक्यूएल में है; हालांकि, मुझे यहां ऐसा करने का कोई तरीका नहीं मिल रहा है। परिणाम के बाद पहले से ही लौटा दिया जाता है
query.list.distinct
;:
आप सिद्धांत में एक कर सकता है हालांकि, मैंने पेजिंग समर्थन भी लागू किया है, इसलिए डेटाबेस से वापस आने के बाद आप परिणामों को संसाधित नहीं करना चाहेंगे।
query.drop(offset).take(limit).list
तो, संक्षेप में, मैं एक तरह से मेरी क्वेरी कि बाहर चला जाता है में अलग चयन निर्दिष्ट करने की आवश्यकता : यहाँ पेजिंग समर्थन है।
किसी के पास कोई विचार है?
अरे, यह एक काम पर विलय कर दिया गया था! मुझे बिल्कुल यकीन नहीं है कि क्यों, मैंने गहरे गोताखोरी का अधिक काम नहीं किया है, लेकिन मुझे एक त्वरित सुधार की जरूरत है। – noplay
किसी कारण से, यह मुझे 'XxxRow' इकाई के बजाय' scala.TupleN' देता है, जिसमें 'क्लासकास्टएक्सप्शन' फेंक दिया जाता है। –
ऐसा लगता है कि यह कारण है: https://github.com/slick/slick/pull/735 –