我想執行搜索以特定字母開頭的特定字符串。 因此,例如,如果起始字母是'A'
,它應該產生一個包含字母表'A'
的所有字符串的結果。如何在HQL中編寫類似查詢
我該如何做到這一點?
我的查詢如下圖所示
Query qry = session.createQuery("From RegistrationBean as rb where rb."+searchCriteria+" like %?%");
qry.setString(0,searchField);
我想執行搜索以特定字母開頭的特定字符串。 因此,例如,如果起始字母是'A'
,它應該產生一個包含字母表'A'
的所有字符串的結果。如何在HQL中編寫類似查詢
我該如何做到這一點?
我的查詢如下圖所示
Query qry = session.createQuery("From RegistrationBean as rb where rb."+searchCriteria+" like %?%");
qry.setString(0,searchField);
您可以使用標準使用像
session = sessionFactory.openSession();
Criteria query = session.createCriteria(Pojo.class);
query.add(Restrictions.like("column", "a", MatchMode.START));
它會給你它通過字母大怒「A」開頭的字符串列表。
查詢改成這樣:
Query qry = session.createQuery("From RegistrationBean as rb where rb."+searchCriteria+" like ?");
qry.setString(0, "%"+searchField+"%");
Query qry = session.createQuery("From RegistrationBean as rb where rb."+searchCriteria+" like :sf");
qry.setString("sf",'%'+searchField+'%');
以上事情爲我工作:)
這很容易被SQL注入。 –
這樣
createQuery("from RegistrationBean as rb where rb.:searchCriteria like '%:searchField%'");
@ Ni3這個怎麼樣。 –
您是否聽說過有關SQL注入的任何信息? http://en.wikipedia.org/wiki/SQL_injection必須使用參數綁定來避免它。 –
這個鏈接與hibernate和hql沒有任何關係。 –
更改爲
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+"%");
}
''''不適合你嗎? –
不,我認爲我的查詢存在一些問題。 查詢QRY = session.createQuery( 「從RegistrationBean如RB,其中R b」。+ searchCriteria + 「像%%?」) qry.setString(0,searchField); – Ni3
[你有什麼嘗試?](https://whathaveyoutried.com)請發佈你到目前爲止的問題。 – Keppil