2012-11-07 28 views
17

मैं jquery का उपयोग कर एक स्वत: पूर्ण कार्यक्षमता को कार्यान्वित कर रहा हूं, जब मैं नाम टाइप करता हूं, तो यह डीबी से रिकॉर्ड प्राप्त करता है, डीबी में संग्रहीत रिकॉर्ड पूंजी & छोटे अक्षरों का मिश्रण होते हैं। मैंने एक एचक्यूएल क्वेरी लिखी है जो मुझे केस-संवेदी के साथ रिकॉर्ड लाती है, लेकिन मुझे मामले के बावजूद रिकॉर्ड करने की आवश्यकता है। क्वेरी,असंवेदनशील खोज के लिए ऑपरेटर की तरह एचक्यूएल

List<OrganizationTB> resultList = null; 
Query query = session.createQuery("from DataOrganization dataOrg where dataOrg.poolName 
like '%"+ poolName +"%'"); 
resultList = query.list();  

पूर्व है: यदि मैं पूल के नाम, एचआरएमएस डेटा सेट, एचआरएमएस डाटा, मानव संसाधन डेटा आदि है ... अगर मैं मानव संसाधन या घंटा टाइप मैं, सभी 3 रिकॉर्ड प्राप्त करने की आवश्यकता है जो मुझे मैं सक्षम नहीं हूँ

कृपया मदद ...

उत्तर

41

परिवर्तन अधिक जानकारी के लिए

"from DataOrganization dataOrg where lower(dataOrg.poolName) 
like lower('%"+ poolName +"%')" 

करने के लिए अपने प्रश्न हैं एक नज़र 14.3 doc

+0

यह काम किया .. धन्यवाद – madhu

+2

क्या आपको नहीं लगता कि 'poolName.toLowerCase() 'अभिव्यक्ति के लिए' निचले ('%' + poolName +"% ') "' पर एक अच्छा विकल्प है, क्योंकि यह रोकता है डीबी विशिष्ट समारोह में एचक्यूएल फ़ंक्शन रूपांतरण के लिए अतिरिक्त ओवरहेड? –

+0

@ अरुणकुमार मुझे लगता है कि अगर आप 'पूलनाम' टूलोवरकेस() 'तो जावा-पोजो में संपीड़न किया जाएगा, तो कोई एसक्यूएल ऑप्टिमाइज़ेशन नहीं होगा, जहां फंक्शन' लोअर 'के मामले में बोली स्तर पर एसक्यूएल ऑप्टिमाइज़ेशन होने की संभावना है और कम संख्या के साथ कम स्मृति का उपभोग करेंगे। डेटाबेस से प्राप्त वस्तुओं का। –

12

एक अच्छा समाधान है:

List<OrganizationTB> resultList = null; 
Query query = session.createQuery("from DataOrganization dataOrg where lower(dataOrg.poolName) like :poolName"); 
query.setParameter("poolName", '%'+poolName.toLowerCase()+'%'); 
resultList = query.list(); 

तो तुम एसक्यूएल इंजेक्शन से अपने कोड की रक्षा करें

+0

और आपके पास टेबल फ़ील्ड सामग्री और क्वेरी स्ट्रिंग दोनों निम्न-चरणबद्ध हैं। – FaithReaper