2012-11-26 9 views
9

Ich möchte Suche nach einer bestimmten Zeichenfolge, die mit einem bestimmten Alphabet beginnt. Also, zum Beispiel, wenn das Startalphabet 'A' ist, sollte es ein Ergebnis erzeugen, das alle Zeichenfolgen mit Alphabet 'A' enthalten wird.Wie schreibe ich eine ähnliche Abfrage in HQL

Wie erreiche ich das?

Meine Frage ist, wie unten

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

Und 'like' funktioniert nicht für dich? –

+0

Nein, es gibt ein Problem mit meiner Frage, denke ich. Abfrage qry = session.createQuery ("Von RegistrationBean als rb wo rb." + Such + "wie%%?") qry.setString (0, Suchfeld); – Ni3

+0

[Was haben Sie versucht?] (Https://whathaveyoutried.com) Bitte posten Sie, was Sie bisher in der Frage haben. – Keppil

Antwort

9

Sie können Kriterien verwenden für die Verwendung wie

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

Es wird Ihnen die Liste der Zeichenfolge, die von alpha-Beize ‚a‘ beginnen.

18

Ihre Anfrage zu diesem Wechsel:

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+'%'); 

Die obige Sache für mich gearbeitet :)

+0

Dies ist anfällig für SQL-Injection. –

3

Auf diese Weise

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

@ Ni3 Wie wäre es damit. –

+1

Haben Sie etwas über SQL-Injektion gehört? http://en.wikipedia.org/wiki/SQL_injection Man muss die Parameterbindung verwenden, um es zu vermeiden. –

+0

Dieser Link hat nichts mit Ruhezustand und hql. –

6

Wechsel zu

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+"%"); 
} 
Verwandte Themen