2015-03-22 2 views
0

У меня есть индексированное перечисление с несколькими значениями Active, Pending, Pulled. Я должен был разработать запрос, который получит только Active и Pulled, но не Pending.Hibernate Search Enum Query Несколько значений

junction = junction.must(
        qb.keyword().onField("itemStatus").ignoreFieldBridge() 
          .matching("active pulled").createQuery()); 

запрос выше мой первый удар в этом, но это не возвращает ничего, если я не изменить запрос только активным или изменить переход к должен. Я в принципе хочу сусло с и условия ...

ответ

1

Вам нужно будет отделить два запроса для различного статуса соответствия:

Query itemStatusQuery = queryBuilder 
    .bool()    
     .should(queryBuilder.keyword().onField("itemStatus").matching("active").createQuery()) 
     .should(queryBuilder.keyword().onField("itemStatus").matching("pulled").createQuery()) 
    .createQuery(); 

junction = junction.must(itemStatusQuery); 

В качестве альтернативы вы можете быть в состоянии использовать must().not(). См. Также http://docs.jboss.org/hibernate/search/5.1/reference/en-US/html_single/#_combining_queries

+0

Я пробовал это, но у меня есть третий критерий, который в нем является обязательным. поэтому все, что происходит, это необходимость в инструкциях itemStatus, но запрос также возвращает все элементы, соответствующие трем критериям, возвращающим ожидающие элементы, но я не хочу отложенные элементы. Выбор тоже переменный. Иногда я хочу активный, ожидающий или иногда просто ожидающий. Это зависит от того, что выбрал пользователь. – chrislhardin