2012-11-07 12 views
17

Sto implementando una funzionalità di completamento automatico utilizzando Jquery, quando digito il nome, recupera il record dal db, I record memorizzati in db sono una combinazione di lettere maiuscole &. Ho scritto una query HQL che mi consente di archiviare i record con distinzione tra maiuscole e minuscole, ma è necessario registrarli indipendentemente dal caso. Ecco la query,Operatore simile a HQL per ricerca senza distinzione tra maiuscole

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

Es: Se ho nomi da biliardo, HRMS dati, HRMS dati, dati HR ecc ... se digito HR o HR ho bisogno di ottenere tutti i 3 record, che ho non sono in grado di

Please help ...

risposta

41

modificare la tua ricerca per

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

Per ulteriori informazioni, date un'occhiata 14.3 doc

+0

Ha funzionato .. grazie a una tonnellata – madhu

+2

Non pensi che 'poolName.toLowerCase()' sia una buona scelta su 'lower ('%" + poolName + "%')" 'per espressioni simili, in quanto previene overhead extra per la conversione della funzione HQL in funzione specifica DB? –

+0

@ArunKumar penso che se si 'poolName.toLowerCase()' allora il comparsion sarà fatto su Java-Pojo, non ci sarà alcuna ottimizzazione SQL dove, come nel caso della funzione 'lower', c'è possibilità a livello dialettale di avere l'ottimizzazione SQL e consumerà meno memoria con meno no. di oggetti recuperati dal database. –

12

Una buona soluzione è:

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

Così si Proteggi il tuo codice dall'iniezione SQL

+0

E il contenuto dei campi della tabella e la stringa della query sono entrambi con un valore inferiore. – FaithReaper

Problemi correlati