实施Hibernate Search后,Hibernate Criteria弃用警告

平民

对于我的Web应用程序,我必须实现全文搜索-因为我已经在Spring Data JPA中使用Hibernate(在Spring Boot之上),所以我决定为全文Lucene查询实现Hibernate Search。一切都按预期进行,但是在实施Hibernate Search之后,我开始收到警告:

Hibernate的旧版org.hibernate.Criteria API已过时;使用JPA javax.persistence.criteria.CriteriaQuery代替

我没有对我的Hibernate Search查询使用Criteria API(无论如何,由于Hibernate Search文档不建议使用它),我的查询代码基本上如下所示:

import org.apache.lucene.search.Query;
import org.hibernate.search.jpa.FullTextEntityManager;
import org.hibernate.search.jpa.FullTextQuery;
import org.hibernate.search.jpa.Search;
import org.hibernate.search.query.dsl.BooleanJunction;
import org.hibernate.search.query.dsl.QueryBuilder;

...

@Override
@Transactional
public List<Picture> fullTextSearchByCriteria(List<SearchCriteria> criteria, String pageString) {
    final FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
    final QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(Picture.class).get();
    final Query luceneQuery = buildFromCriteria(queryBuilder, criteria);
    final FullTextQuery jpaQuery = fullTextEntityManager.createFullTextQuery(luceneQuery, Picture.class);

    /* some fine tunning here with calls to .setFirstResult(), .setMaxResults() and 
       .getResultSize() for pagination. It's used for page wrapper that I omitted here for simplicity sake */

    return jpaQuery.getResultList()
}

并且buildFromCriteria(queryBuilder, criteria)是一种建立布尔连接的方法(SearchCriteria类只是一个普通的POJO,那里没什么有趣的)。该方法如下所示:

@Transactional
private Query buildFromCriteria(QueryBuilder queryBuilder, List<SearchCriteria> criteria) {
    if (criteria == null)
        return queryBuilder.all().createQuery();

    BooleanJunction<BooleanJunction> junction = queryBuilder.bool();
    for (SearchCriteria c : criteria) {
        junction.must(
                queryBuilder
                        .keyword()
                        .onField(c.getField())
                        .matching(c.getValue())
                        .createQuery()
        );
    }
    return junction.createQuery();
}

每次使用此全文本搜索都会导致Criteria API弃用警告。

它是否在引擎盖下使用过时的Criteria API?如果是这样,为什么Hibernate Search会使用Hibernate不推荐使用的API?实际上,当我调用时,我在应用程序启动时也收到了一些弃用警告

FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
fullTextEntityManager.createIndexer().startAndWait();

用于初始索引。

注意:我正在应用程序的其他部分中使用Springs Specification,我希望它可能在后台使用Criteria API,但是使用它时我不会收到弃用警告,并且在添加Hibernate Search之前也没有收到任何警告。 。

EntityManager是通过@PersistanceContext注入获得的

如果可能,我想摆脱不推荐使用的API用法,但是我不了解在这种情况下在哪里使用Criteria API,以及是否有可能将其更改为JPA CriteriaQuery(因为我没有明确使用它)。

我对我认为可能很重要的版本的依赖:

  • 休眠核心:5.2.5。最终
  • hibernate-search-orm:5.7.0.Beta2

还为分析器使用了一些额外的依赖项:

  • solr-analysis-extras:5.5.2
  • lucene-analyzers-tempel:5.5.2
桑内

从Hibernate Search到Hibernate ORM的最新更改的转换是一项复杂的工作。您正在点击HSEARCH-2381

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

弃用org.hibernate.dialect.PostgreSQLDialect

来自分类Dev

Query#scroll()在Hibernate中已被弃用?

来自分类Dev

切换到Realm 88.2后的弃用警告

来自分类Dev

事务提交后通过Hibernate Search(HS)进行异步索引

来自分类Dev

插入后,Hibernate Search不会重新索引lucene索引

来自分类Dev

实施 mapforge 后的 ProGuard 警告

来自分类Dev

Hibernate Entitymanager-“已弃用-改用hibernate-core”是什么意思?

来自分类Dev

Hibernate Criteria multiple where

来自分类Dev

Ansible 弃用警告而不是使用 `result|search` 使用 `result is search`,但如何使用?

来自分类Dev

Hibernate Search query for class

来自分类Dev

Hibernate Search查询类

来自分类Dev

Hibernate Search查询类

来自分类Dev

实体在Hibernate 4中已弃用。那么我应该改用什么呢?

来自分类Dev

设置force_available_locales = true后,Rails I18n验证弃用警告

来自分类Dev

将Symfony 4.3.9升级到4.4.1 / 5.0后的弃用警告

来自分类Dev

进行适当的更新后,Android视图绑定弃用警告在Android Studio 4中仍然存在

来自分类Dev

更改一个字段后,Hibernate Search未编制索引

来自分类Dev

Hibernate 5是否对多租户数据实施了DISCRIMINATOR方法?

来自分类Dev

尝试使用Hibernate实施条件查询,出现“无法解析方法”错误

来自分类Dev

了解Hibernate的Criteria#setMaxResults

来自分类Dev

Python弃用警告

来自分类Dev

AppAuth的弃用警告

来自分类Dev

Scalatest弃用警告

来自分类Dev

PyBrain弃用警告

来自分类Dev

修复弃用警告

来自分类Dev

用Hibernate保存对象

来自分类Dev

用grails配置Hibernate

来自分类Dev

Hibernate Search索引单个租户

来自分类Dev

Hibernate Search索引单个租户

Related 相关文章

热门标签

归档