我正在使用JPARepository,我选择了Hibernate Search来实现搜索功能。
这是链接:http://hibernate.org/search/documentation/getting-started/
使用EntityManager(JPA)重建索引
FullTextEntityManager ftem = Search.getFullTextEntityManager(entityManager); 。ftem.createIndexer()startAndWait();
假设我有两个实体类 Company.java &的 Employee.java
员工(e_id)保存在公司(c_id)下,关系存储在另一个表“company_employee”中。
我想仅对那些与公司帐户相关联的员工(不是所有其他公司的员工)实施搜索。
例如:从company_employee中选择e_id,其中c_id =?
现在假设我有3名公司员工,想要获取这3名员工的所有记录,而不是其他人。
答案 0 :(得分:0)
你取公司而不是这样的员工:
QueryBuilder qb = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder().forEntity(Company.class).get();
在你的lucene查询中:
luceneQuery = queryBuilder.keyword()。wildcard()。onFields(“employees.employeeName”)。matching(“m *”)。createQuery()
员工是使用@IndexedEmbedded。
注释的字段public class Company {
...
@IndexedEmbedded
private List<Employee> employees;
...
}
您将获得一家只有员工而非所有员工的公司。 (我不知道你是否必须使用急切获取) 那是你在找什么?