2010-04-19 89 views
0

我有一個用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); 

但是我需要檢查每一個輸入,並且我需要根據這個東西創建查詢字符串。

什麼是創建搜索查詢最聰明,最簡單的方法?

回答

2

你可以使用一個標準的查詢,而不是:

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