2012-11-07 10 views
17

Ich bin eine Autocomplete-Funktionalität mit Jquery implementieren, wenn ich den Namen eingeben, holt es den Datensatz aus der db, Die Datensätze in db sind Mischung aus Großbuchstaben &. Ich habe eine HQL-Abfrage geschrieben, die mich die Datensätze mit Groß- und Kleinschreibung holt, aber ich muss unabhängig von Groß- und Kleinschreibung Datensätze. Hier ist die Abfrage,HQL wie Operator für case insensitive Suche

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

Ex: Wenn ich Poolnamen haben, HRMS Datensatz, Hrms Daten, Hr Daten etc ... wenn ich Typ HR oder hr Ich brauche alle drei Datensätze zu bekommen, was ich kann ich nicht.

Bitte helfen ...

Antwort

41

Änderung Ihrer Anfrage zu

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

für weitere Informationen haben einen Blick 14,3 doc

+0

Es hat funktioniert .. danke eine Tonne – madhu

+2

Glaubst du nicht, dass 'poolName.toLowerCase()' eine gute Wahl gegenüber 'low ('%" + poolName + "%')" 'für like Ausdruck ist, wie es verhindert zusätzlicher Overhead für die HQL-Funktionskonvertierung in DB-spezifische Funktion? –

+0

@ArunKumar Ich denke, wenn Sie 'poolName.toLowerCase()' dann Comparsion wird bei Java-Pojo getan werden, wird es keine SQL-Optimierung, wo wie im Falle der Funktion 'Lower' gibt es Möglichkeit auf Dialekt-Ebene zu SQL-Optimierung haben und wird weniger Speicher mit weniger Nein verbrauchen. von Objekten aus der Datenbank abgerufen. –

12

Eine gute Lösung ist:

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

Sie also Schützen Sie Ihren Code vor SQL-Injektion

+0

Und Sie haben Tabellenfelder Inhalt und Abfragezeichenfolge beide im unteren Gehäuse. – FaithReaper