我该如何做这个简单的搜索?
问题描述:
我有一个用Hibernate构建的web应用程序。 在一个页面上,我有一个与5个输入我该如何做这个简单的搜索?
- 字段1
- 场2
- 场3
- 字段4
- 字段5
当所有的输入都是空提交按钮,我做一个简单的查询
Query query = session.createQuery("from MyTable");
但是当我至少有一个输入不为空时,我必须创建搜索查询。假设字段1不为空:
Query query = session.createQuery("from MyTable where field1= :field1");
query.setParameter("field1", field1);
但是我需要检查每一个输入,并且我需要根据这个东西创建查询字符串。
什么是创建搜索查询最聪明,最简单的方法?
答
你可以使用一个标准的查询,而不是:
Criteria criteria = hibernateSession.createCriteria(YourClass.class);
,然后根据每个字段中添加条件到查询:
if(fieldValue1 != null) {
criteria.add(Restrictions.eq("FieldProperty1", fieldValue1))
}
if(fieldValue2 != null) {
criteria.add(Restrictions.eq("FieldProperty2", fieldValue2))
}
...
当然,如果你使用的是只会工作本地hibernate API而不是JPA-API。
Upvoted this is as he is correct,但如果这些输入字段是由webapp用户键入的自由文本,则可能需要使用由Hibernate Search提供的FullText Search API。 – Sanne 2013-07-01 08:16:39