如何在休眠搜索中选择特定列

时间:2013-10-18 13:37:14

标签: java hibernate hibernate-search

我需要使用hibernate搜索只选择几列。以下是运行良好的代码

  FullTextSession fts = org.hibernate.search.Search.getFullTextSession(getSession());

  org.apache.lucene.search.BooleanQuery query = prepareQuery(dto);
  fullTextQuery = fts.createFullTextQuery(query, ProfileBean.class);

  fullTextQuery.setFirstResult(dto.getProfileBean().getResultStartIndex());
  fullTextQuery.setMaxResults(dto.getProfileBean().getResultsLimit());

  List<ProfileBean> profiles = fullTextQuery.list();

在上面的例子中,我只想选择'firstName'和'lastName'列。

以下代码抛出异常

 List<String> projectedFields = new ArrayList<String>();
          projectedFields.add("firstName");
          projectedFields.add("lastName");

org.hibernate.search.SearchException: Projecting an unstored field: firstName

实际上我不想在lucene中存储firstName字段任何其他的建议。?

1 个答案:

答案 0 :(得分:0)

在您的类ProfileBean中,您需要添加注释:

@Field(store=Store.YES)

到字段firstnamelastname

请参阅第5.1.2.5节。有关详细信息,请参阅Hibernate文档中的投影: https://docs.jboss.org/hibernate/search/3.2/reference/en/html/search-query.html#d0e3643

快乐的编码!