如何在HQL中的where子句中编写带有“like”的查询?

问题描述 投票:0回答:4

我想搜索以特定字母开头的特定字符串。

因此,例如,如果起始字母是

'A'
,那么它应该产生一个结果,其中将包含所有带有字母
'A'
的字符串。

我如何实现这一目标?

我的查询如下所示:

Query qry = session.createQuery (
  "from RegistrationBean as rb where rb."
   + searchCriteria
   + "  like %?%"
);
qry.setString(0, searchField);
java hibernate hql sql-like
4个回答
32
投票

将您的查询更改为:

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

18
投票

您可以使用类似的标准

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

它将为您提供以 alpha-bate 'a' 开头的字符串列表。


13
投票

更改为

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

9
投票

这边

createQuery("from RegistrationBean as rb where rb.:searchCriteria like '%:searchField%'"); 
© www.soinside.com 2019 - 2024. All rights reserved.