Hibernate查询以搜索字符串字段

时间:2016-06-17 03:46:48

标签: java hibernate hql

我的一个表中有一个字段,其中包含要存储urls的字段,该表的POJO如下所示:

public class ContentDefinition 
    {
        private String contentName;
        private int contentId;
        private String contentType;
        private String contentUrl;

    }

我正在尝试编写一个查询来检查contentUrl字段是否包含以字符串address-book结尾的url。

我使用以下查询:

String hql = " from ContentDefinition WHERE contentUrl LIKE '%'address-book'%'";
Query query = getCurrentSession().createQuery(hql);
List<ContentDefinition> resultsList = query.list();

但我得到一个例外:

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: address near line 1, column 130

是否有任何解决方案,我的网址可以是任何内容,但始终以/address-book

结尾

3 个答案:

答案 0 :(得分:1)

String hql = " from ContentDefinition WHERE contentUrl LIKE :addressBook "; 
Query query = getCurrentSession().createQuery(hql);
query.setParameter("addressBook","address-book");
List<ContentDefinition> resultsList = query.list();

答案 1 :(得分:1)

String hql =“from ContentDefinition WHERE contentUrl LIKE'%address-book%'”;

更改以上行。其余代码看起来不错。我测试过类似的代码。

答案 2 :(得分:0)

阅读SQL LIKE Operator章。

医生说:

  

在WHERE子句中使用LIKE运算符来搜索列中的指定模式。

     

where animalType like '%cats%'

这意味着,您应该从以下位置更改查询:

String hql = " from ContentDefinition WHERE contentUrl LIKE '%'address-book'%'";

String hql = " from ContentDefinition WHERE contentUrl LIKE '%address-book%'";