2012-11-07 20 views
17

için ben adını yazarken, bu db kayıt getirir, jQuery kullanarak bir otomatik tamamlama işlevi uygulayan am gibi db saklanan kayıtlar sermaye & küçük harflerin karışımıdır. Kayıtlara hassas bir şekilde kayıtlar getiren bir HQL Sorgusu yazdım ama durumdan bağımsız olarak kayıt yaptırmam gerekiyor. İşte sorgu,HQL operatör vaka duyarsız arama

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

Ex: Ben havuz isimleri, HRMS Veri seti, HRMS Veri, Sa veriler vb varsa ben HR veya hr yazarsanız ... Ben, 3 kayıtlarını almak gerekir ki ben yapamam.

yardım edin ...

cevap

41

değişiklik daha fazla bilgi için

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

için sorgu sahip bir göz 14.3 doc

+0

İşe yaradı .. teşekkürler değil mi, 'poolName.toLowerCase()' iyi bir seçim gibi ifadesi için 'düşük ('% '+ poolName +' %')" 'bitti düşünüyorum DB özel fonksiyonuna HQL fonksiyon dönüştürme için ek yük? Eğer 'poolName.toLowerCase()' ardından kaşılaştırma Java Pojo yapılacaktır, herhangi bir SQL optimizasyonu olmayacak eğer – madhu

+2

yapın 210 –

+0

@ArunKumar bence nerede 'fonksiyonu olduğu gibi lehçesi düzeyinde olasılık SQL optimizasyon olması lower' var ve daha az bellek ile daha az bellek tüketir. veritabanından alınan nesnelerin. –

12

İyi bir çözümdür: Yani

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(); 

SQL enjeksiyonu sizin kodu korumak

o önlediği için bir ton
+0

Ayrıca, hem alt kasa hem de tablo alanları içeriği ve sorgu dizesi var. – FaithReaper