Hibernate搜索和Hibernate标准

时间:2016-03-14 20:12:30

标签: hibernate hibernate-criteria hibernate-search

使用Hibernate Search 5.5.2和Hibernate Criteria时出现以下问题:

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 QUERY LIST SIZE ---> 3

但是当我向Criteria对象添加投影时,不会返回我的结果

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

输出:---> RESULTADO QUERY LIST SIZE ---> 0

为什么会这样?

1 个答案:

答案 0 :(得分:1)

Criteria只应用于自定义提取选项。这在5.1.3.4. Fetching strategy中有记录。我们应该改进验证,因为我希望Hibernate Search能为您的用例抛出异常。

要使用具有FullTextQuery的投影,请不要将投影选项应用于加载条件,而是直接将它们应用于 FullTextQuery 。有关完整示例,请参阅“5.1.3.5。投影”,与关于获取的章节相同。