我该如何做这个简单的搜索?

问题描述:

我有一个用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。

+0

Upvoted this is as he is correct,但如果这些输入字段是由webapp用户键入的自由文本,则可能需要使用由Hibernate Search提供的FullText Search API。 – Sanne 2013-07-01 08:16:39