2010-04-19 6 views
0

У меня есть веб-приложение с Hibernate. На одной странице, у меня есть одна кнопка отправки с 5 входамиКак я могу сделать этот простой поиск?

  • field1
  • field2
  • field3
  • Field4
  • Field5

Когда все входы равны нулю, я сделать простой запрос

Query query = session.createQuery("from MyTable"); 

, но когда у меня есть хотя бы один вход не null, я должен создать поисковый запрос. Давайте скажем, field1 не равно нулю:

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)) 
} 

... 

Конечно, это будет работать только если вы используете собственный API с гибернацией вместо JPA-API.

+0

Оценил это как правильное, но если эти поля ввода являются свободным текстом, введенным пользователем webapp, вы можете использовать API поиска FullText, предоставляемый Hibernate Search. – Sanne