Slick

2015-10-23 14 views
10

में इंटरपोलेटेड SQL क्वेरी प्रिंटिंग मैं डिबगिंग के लिए एक इंटरप्लाटेड Slick2 SQL कथन मुद्रित करने का प्रयास कर रहा हूं और मुझे जो कुछ मिलता है वह प्रश्न चिह्नों वाला है।Slick

def query(name: String) = sql"SELECT MAX(age) FROM users WHERE name = $name".as[Int] 
println(query("Bob").getStatement) 

ऊपर प्रिंट इस:

SELECT MAX(age) FROM users WHERE name = 'Bob' 

नोट::

SELECT MAX(age) FROM users WHERE name = ? 

कैसे मैं इसे इस प्रिंट कर सकते हैं इस सवाल this

+1

जिस समस्या को आप हल करने का प्रयास कर रहे हैं वह सख्ती से संबंधित नहीं है: slick जेडीबीसी स्तर पर तैयार बयान तैयार करता है और उनको मुद्रित किया जाता है। मुझे संदेह है कि आपको झटके पर अपना ध्यान केंद्रित करने के बजाय जेडीबीसी तैयार वक्तव्यों को मुद्रित करना चाहिए। मुझे यकीन नहीं है कि जेडीबीसी में ऐसा करने का कोई तरीका है। –

उत्तर

2

से का डुप्लिकेट नहीं है slick documentation: "आप शाब्दिक मूल्य डालने के लिए $ $ के बजाय # $ का उपयोग कर सकते हैं सीधे पूछताछ में "।

//note the '#' 
def query(name : String) = sql"SELECT MAX(age) FROM users WHERE name = '#$name'".as[Int] 
+0

नहीं, मैं '# $' नहीं चाहता क्योंकि यह SQL कथन के हिस्सों में स्वयं को विभाजित करने के लिए है (उदा। तालिका नाम आदि)। यह गलत एसक्यूएल उत्पन्न करेगा क्योंकि यह 'नाम = = बॉब' के बजाय 'नाम = बॉब' कहां करेगा। मैं वैरिएबल को बाध्य करने के लिए '$' चाहता हूं ... – pathikrit

+0

यह गैर प्राइमेटिव्स के लिए भी काम नहीं करेगा उदाहरण: 'डीफ़ क्वेरी (जन्मदिन: लोकलडेट) = एसक्यूएल" जन्मदिन> $ जन्मदिन "उपयोगकर्ताओं से चुनें MAX (आयु)। [Int] ' यहां यदि मेरे पास दायरे में सही अंतर्निहित है, तो यह सही SQL बाइंड चर में परिवर्तित हो जाएगा। अगर मैं '# $' का उपयोग करता हूं, तो यह केवल 'लोकलडेट' के '.toString' को रखेगा जो मैं नहीं चाहता हूं। – pathikrit

+0

मैंने उचित एसक्यूएल बनाने के लिए क्वेरी में एकल उद्धरण जोड़े। मुझे नहीं पता कि आप प्रिंटल को "गैर-प्राइमेटिव" के लिए क्या दिखाना चाहते हैं क्योंकि वे एकमात्र प्रकार के मान हैं जो एक एसक्यूएल क्वेरी में जा सकते हैं ... –

3

आप शायद अपने application.conf

logger.scala.slick.session=DEBUG 

इस के लिए निम्न जोड़ने के लिए कंसोल में संकलित क्वेरी स्ट्रिंग दिखाना चाहिए चाहते हैं।

+0

मेरे पास एक प्ले ऐप है। मैंने इसे अपने application.conf दोनों में जोड़ा और मैंने इसे अपने logger.xml में जोड़ा: '' लेकिन, मुझे यह नहीं दिख रहा है ... – pathikrit

+0

क्या होता है जब आप logger.xml में "DEBUG" में लॉग स्तर में बदलते हैं? –

+0

वही। मैं भी DEBUG के लिए डाउनग्रेड किया। कुछ भी तो नहीं। मैं Slick 2.0 + Play 2.2 – pathikrit

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