अपने अनुभव से मैं आपको बताऊंगा। दो परिदृश्य हैं
1) आप क्वेरी में एक पैरामीटर निर्दिष्ट करना चाहते हैं जिसका मान गतिशील रूप से सेट किया गया हो।
eg: where user_id = :userId
यहां आपको कोई समस्या नहीं होगी यदि आप "userId" के समान नाम के साथ पैरामीटर सेट कर रहे हैं;
2) आप मान टाइपकास्ट कर रहे हैं
eg: select count(id) :: integer
जब आप ऐसा कर रहे हों तो आपको एस्केप कैरेक्टर का उपयोग करना होगा अन्यथा हाइबरनेट सोचेगा कि यह एक पैरामीटर है। और यह एक त्रुटि देगा "सभी पैरामीटर सेट नहीं हैं" आप एस्केप कैरेक्टर का उपयोग करके कोड लिखने से इसे दूर कर सकते हैं
eg:select count(id) \\:\\: integer
तो यह आपकी समस्या का समाधान करेगा। और यदि आप गलत तरीके से पिछड़े स्लैश के बजाय फॉरवर्ड स्लैश का उपयोग करते हैं तो आपको त्रुटि मिलेगी "उपसर्ग के बाद स्थान की अनुमति नहीं है"
Wrong: select count(id)//://: integer
Right: select count(id)\\:\\: integer
लेकिन मैंने आपको "::"
. का उपयोग करने के बजाय CAST फ़ंक्शन का उपयोग करने की अत्यधिक अनुशंसा की है यह ऑपरेटर select CAST(count(id) as integer)
यह टाइप कास्टिंग का बेहतर तरीका है और इससे कम से कम त्रुटियां होंगी