2016-03-14 119 views
1

我使用Hibernate 5.5.2搜索與Hibernate標準以下的問題:Hibernate Search的和Hibernate標準

Criteria criteria = session.createCriteria(Descriptor.class).add(
       Restrictions.eq("estadoBD", true)); 
//criteria.setProjection(Projections.property("idDescriptor")); 

QueryBuilder queryBuilderDescriptor = fullTextSession 
       .getSearchFactory().buildQueryBuilder() 
       .forEntity(Descriptor.class).get(); 
org.apache.lucene.search.Query querySearchDescriptor = queryBuilderDescriptor 
       .keyword().onFields("valor").matching(buscar).createQuery(); 
FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery(
       querySearchDescriptor, Descriptor.class).setCriteriaQuery(
       criteria); 

resultados = fullTextQuery.list(); 

輸出:---> RESULTADO查詢列表SIZE ---> 3

但當我添加一個投影Criteria對象不返回我的結果

Criteria criteria = session.createCriteria(Descriptor.class).add(
      Restrictions.eq("estadoBD", true)); 
criteria.setProjection(Projections.property("idDescriptor")); 

輸出:---> RESULTADO查詢列表SIZE ---> 0

這是爲什麼發生?

回答

1

Criteria只能用於自定義提取選項。這在5.1.3.4. Fetching strategy中有記錄。我們應該改進驗證,因爲我期望Hibernate Search爲您的用例拋出一個異常。

要使用帶有FullTextQuery的投影,請不要將投影選項應用於加載標準,而是直接將它們應用於FullTextQuery。有關全部示例,請參見「5.1.3.5。投影」,與「提取」相同。