用于在postgresql数据库表字段中搜索多个字符串的HQL查询

时间:2016-08-17 05:47:36

标签: java postgresql hibernate hql

我在postgresql中使用hibernate数据库和Java Web Application。我有一个contentscontent_data作为文本字段。其对应的POJO名为ContentTO,并且数据库字段contentData的{​​{1}}字段如下: 公共类ContentTO

content_data

我有以下方法:

{
    private int contentId;
    private String contentData;
    private int applicationId;
    private int siteId;
    private int userCreated;
    private int userModified;
    private Date createdTime;
    private Date updatedTime;
}

如果在字段中仅搜索单个字符串,则此方法将起作用。我试图搜索多个字符串,可以在传递的参数中以逗号分隔。

我还尝试了以下SQL来测试查询:

public List<ContentTO> listContentsBySearchStrings(String searchData, int applicationId, int siteId) throws HibernateException 
    {
        Query query = getCurrentSession().createQuery("ContentTO where siteId = :siteId and lower(contentData) LIKE :searchString ");
        query.setParameter("siteId", siteId);
        query.setParameter("applicationId", applicationId);
        query.setParameter("searchString", "%"+searchData+"%");
        List<ContentTO> resultsList = query.list();
        if(resultsList != null && ! resultsList.isEmpty())
        {
            return resultsList;
        }
        return new ArrayList<ContentTO>();
    }

当参数是逗号分隔的字符串时,有没有办法使用hql执行此操作。

1 个答案:

答案 0 :(得分:0)

你可以使用&#34; IN&#34;其中参数是您的案例中的字符串列表:

...where content_data in (:listOfYourStrings)