我可以使用 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();
这很棒。但是,我怎样才能结合
luceneQuery
在现有的 JPA 查询中?例如作为谓词在 CriteriaBuilder.where()
中使用表达。我认为这可能是可能的,因为 Hibernate Search 从其索引中检索实体标识符并最终在 JPA 查询中使用它们来获取结果,但我不知道 getResultList()
旁边是否有任何方法获取其他中间类型的查询,例如 javax.persistence.criteria.Predicate
.
最佳答案
您应该可以使用 projections仅从 lucene 检索标识符,然后使用它们传递给例如in
您的 jpa 查询的表达式。
关于hibernate - 结合 JPA 和 HIbernate Search Lucene 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36081363/