如何使用Hibernate Search实现关系数据?

时间:2015-08-05 10:57:26

标签: jpa lucene hibernate-search

我正在使用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名员工的所有记录,而不是其他人。

1 个答案:

答案 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; 
...
}

您将获得一家只有员工而非所有员工的公司。 (我不知道你是否必须使用急切获取) 那是你在找什么?