हैलो दोस्तों मुझे NamedQuery करते समय सटीक मिलान के साथ कुछ समस्याएं आ रही हैं।जावा: NamedQuery स्ट्रिंग समस्या
मैं वर्तमान में कुछ इस तरह उपयोग कर रहा हूँ:
@NamedQuery(name = MyClass.GET_ENTRY_BY_NAME, query = "select e from Entry e where e.name =:"+ Entry.NAME)
...
Query query = em.createNamedQuery(MyClass.GET_ENTRY_BY_NAME);
query.setParameter(Entry.NAME, myEntry.getName());
यह ज्यादातर मामलों के लिए काम करता है, फिर भी मैंने देखा है कि मामले में उपयोगकर्ता अंत में एक स्थान के साथ फ़ाइल नाम गुजरती हैं, namedQuery कि चरित्र पर ध्यान नहीं देता। उदाहरण के लिए:
Query query = em.createNamedQuery(MyClass.GET_ENTRY_BY_NAME);
query.setParameter(Entry.NAME, myEntry.getName()+ " ");
पहले क्वेरी के समान परिणाम लौटाएगा। मेरी 'मान्य प्रविष्टि' सत्यापन को छोड़कर। दूसरे शब्दों में, मैं क्वेरी को कोई प्रविष्टि वापस करने और बाद में त्रुटि का इलाज करने के लिए चाहता हूं।
एक वैकल्पिक हल मैं, के बारे में सोच सकता है namedQuery में मेरी पैरामीटर आसपास एकल उद्धरण डाल करने के लिए, इस तरह है:
@NamedQuery(name = MyClass.GET_ENTRY_BY_NAME, query = "select e from entry e where e.name =':"+ Entry.NAME "'")
हालांकि यह मेरे कोड कचरा जाएगा मामले में स्ट्रिंग उस में एकल उद्धरण शामिल हैं ..
कोई विचार विचार लोग?
हाय एक्स्टाव, उत्तर में त्वरितता के लिए धन्यवाद! ठीक है, मेरा डेटाबेस VARCHAR पर सेट है। लेकिन मुझे यकीन नहीं है कि MySQL संस्करण में इस समस्या से कोई लेना देना है या नहीं। मैंने क्वेरी के पैरामीटर को सेट करने से पहले कुछ ट्रिम करने के बारे में भी सोचा था, हालांकि मैं चाहता था कि सॉफ़्टवेयर डेटाबेस से अलग किसी भी चीज़ के लिए त्रुटि लौटाए, यह सुनिश्चित कर रहा है कि उपयोगकर्ता वास्तव में जो भी चाहता है उसे इनपुट कर रहा है। –
@flavio: मैं MySQL से परिचित नहीं हूं, इसलिए इसकी विशेषताओं के बारे में कुछ भी नहीं कह सकता। यह भी ध्यान रखें कि मेरा क्वेरी नमूना संग्रहित मान को ट्रिम करता है, पैरामीटर नहीं, इसलिए परिणाम सटीक होना चाहिए। – axtavt
मैंने क्वेरी बनाने की प्रक्रिया की जांच करने वाले कोड को डीबग किया ... आपके द्वारा प्रदान किए गए कोड के साथ ऐसा लगता है कि समस्या मेरे एसक्यूएल के भीतर है। मैंने देखा कि दोनों पैरामीटर और डेटाबेस प्रविष्टि अलग हैं ... हालांकि कुछ अज्ञात रहस्यमय दिव्य बल के लिए MySQL बस रिक्त स्थान को ट्रिम करता है और इसे बिल्कुल सही मानता है ... अब मुझे लगता है कि यह देखने के लिए मुझे कुछ शोध मिला है कि यह है या नहीं वास्तव में एक MySQL उम्मीद व्यवहार या इसके पीछे कुछ और है। अभी के लिए मुझे लगता है कि मुझे कुछ प्रकार के अतिरिक्त चेक करना होगा। धन्यवाद! –