我在postgresql
中使用hibernate
数据库和Java Web Application
。我有一个contents
表content_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执行此操作。
答案 0 :(得分:0)
你可以使用&#34; IN&#34;其中参数是您的案例中的字符串列表:
...where content_data in (:listOfYourStrings)