Hibernate Search Enum查询多个值

时间:2015-03-22 21:51:02

标签: hibernate hibernate-search

我有一个带有多个值的Indexed枚举Active,Pending,Pulled。我想设计一个只有Active和Pulled但不是Pending的查询。

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

上面的查询是我的第一次尝试,但除非我将查询更改为仅活动或将结点更改为应该,否则这不会返回任何内容。我基本上想要一个带有条件的必须......

1 个答案:

答案 0 :(得分: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