2012-11-26 10 views
9

Chcę wykonać wyszukiwanie określonego ciągu znaków zaczynającego się od określonego alfabetu. Na przykład, jeśli początkowy alfabet to 'A' den, powinien on dać wynik, który będzie zawierał wszystkie ciągi znaków z alfabetem 'A'.Jak napisać podobną kwerendę w HQL

Jak to osiągnąć?

Moje zapytanie jest jak pokazano poniżej

Query qry = session.createQuery("From RegistrationBean as rb where rb."+searchCriteria+" like %?%"); 
qry.setString(0,searchField); 
+0

A "jak" nie działa dla ciebie? –

+0

Nie ma problemu z moim zapytaniem. qry zapytań = session.createQuery ("Z RegistrationBean a rb rb, gdzie". + SearchCriteria + "jak%%?") qry.setString (0, searchField); – Ni3

+0

[Co próbowałeś?] (Https://whathaveyoutried.com) Opublikuj, co masz do tej pory w pytaniu. – Keppil

Odpowiedz

9

można wykorzystywać kryteria wykorzystania jak

session = sessionFactory.openSession(); 
Criteria query = session.createCriteria(Pojo.class); 
query.add(Restrictions.like("column", "a", MatchMode.START)); 

To daje listę ciąg, który rozpocznie przez alfa-bate „a”.

18

zmienić zapytanie to:

Query qry = session.createQuery("From RegistrationBean as rb where rb."+searchCriteria+" like ?"); 
qry.setString(0, "%"+searchField+"%"); 
1
Query qry = session.createQuery("From RegistrationBean as rb where rb."+searchCriteria+" like :sf"); 
qry.setString("sf",'%'+searchField+'%'); 

Powyższa sprawa pracował dla mnie :)

+0

To jest podatne na SQL Injection. –

3

ten sposób

createQuery("from RegistrationBean as rb where rb.:searchCriteria like '%:searchField%'"); 
+1

@ Ni3 Co powiesz na to. –

+1

Czy słyszałeś coś o wstrzyknięciu SQL? http://en.wikipedia.org/wiki/SQL_injection Aby tego uniknąć, trzeba użyć wiązania parametrów. –

+0

Ten link nie ma nic z hibernacją i hql. –

6

zmienić na

Query qry = session.createQuery("From RegistrationBean as rb where rb "; 
if (searchField != null) 
{ 
    qry = qry + " where rb.searchCriteria like :searchField "; 
} 
if (searchField!= null) 
{ 
    query.setString("searchField","%"+searchField+"%"); 
} 
Powiązane problemy