Hibernate 搜索对两个不同的表进行过滤搜索

Hibernate search do a filter search on two different tables

这是我的问题。

我有两个索引模型 ACL 和资产。这两个表之间没有真正的link,而不是ACL对象的ID与Asset对象相同。

使用 HQL,我有这个请求如何完美地工作:

String[] permissions
Query query = session.createQuery("From Asset as asset, "
+ "Acl as acl "
+ "where asset.id = :id and asset.id = acl.object.id "
+ AclService.buildQuery (permissions)
+ "and acl.group in (:groups) ");
query.setParameter("id", assetId);
query.setParameterList("groups", user.getGroup().getGroups().values());


public static String buildQuery(String[] perms) {
    StringBuilder buf = new StringBuilder(); 
    for (int i=0; i<perms.length; i++) {
        buf.append("and ");
        buf.append(perms[i]);
        buf.append(" = true ");

    }
    return buf.toString();
}

我想执行相同的数据库请求,但使用 Hibernate Search。我怎样才能做到这一点。我已经看过这个 http://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#query-filter 但我没能产生好的结果。

具体怎么做?

正如 Hardy 所说,您需要两个实体的组合索引。 Hibernate Search 目前不支持(查询时)索引连接。

查看参考指南中处理 indexing of associated entities 的部分。 @IndexEmbeddedContainedIn 注释可用于此目的。