【问题标题】:Hibernate Search and Hibernate CriteriaHibernate 搜索和 Hibernate 标准
【发布时间】:2016-03-14 20:12:29
【问题描述】:

我在使用带有 Hibernate Criteria 的 Hibernate Search 5.5.2 时遇到以下问题:

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

为什么会这样?

【问题讨论】:

    标签: hibernate hibernate-criteria hibernate-search


    【解决方案1】:

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

    要将投影与 FullTextQuery 一起使用,请不要将投影选项应用于加载条件,而是将它们直接应用于 FullTextQuery。完整示例参见“5.1.3.5. Projection”,与 Fetching 在同一章中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多