我可以使用Hibernate Search轻松搜索我的JPA实体全文查询:
FullTextEntityManager fullTextEntityManager =
Search.getFullTextEntityManager(this.entityManager);
QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder().forEntity(MyBean.class).get();
org.apache.lucene.search.Query luceneQuery = queryBuilder.keyword()
.onFields("foo", "bar").matching("needle").createQuery();
javax.persistence.Query jpaQuery = fullTextEntityManager
.createFullTextQuery(luceneQuery, MyBean.class);
List<MyBean> fulltextResult = jpaQuery.getResultList();
这太棒了。但是,如何在现有的JPA查询中组合luceneQuery
?例如,作为在CriteriaBuilder.where()
表达式中使用的谓词。我认为这可能是可能的,因为Hibernate Search从索引中检索实体标识符,最后在JPA查询中使用它们来获取结果,但我不知道getResultList()
旁边是否有任何方法可以获取查询在其他中间类型中,例如javax.persistence.criteria.Predicate
。