【问题标题】:Spring Boot with Hibernate Search can't find org.hibernate.query.ParameterMetadata带有 Hibernate Search 的 Spring Boot 找不到 org.hibernate.query.ParameterMetadata
【发布时间】:2017-03-25 16:19:32
【问题描述】:

我有一个使用 Hibernate Search 的相当简单的 Spring Boot 1.5.2 应用程序。 JPA 的东西很好用。

我在运行搜索时得到 Caused by: java.lang.ClassNotFoundException: org.hibernate.query.ParameterMetadata。

代码看起来有点像这样。曾经在 Wildfly 中运行,但我正在迁移到 Spring Boot。

       FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em);

    QueryBuilder qb = fullTextEntityManager.getSearchFactory()
            .buildQueryBuilder()
            .forEntity(Customer.class)
            .get();

    org.apache.lucene.search.Query
            luceneQuery = qb.keyword()
                .wildcard()
                .onField("primaryParty.firstName")
                .andField("primaryParty.sureName")
                .andField("customerNumber")
                .matching(query.trim() + "*")
                .createQuery();
    javax.persistence.Query jpaQuery =
            fullTextEntityManager.createFullTextQuery(luceneQuery, Customer.class);

    List<Customer> result = jpaQuery.getResultList();

通过 Spring Boot 引入 Hibernate Core 5.0.12,但该类不存在。

据此:https://cia.sourceforge.io/tattleTaleReport/jar/hibernate-search-orm-5.7.0.Final.jar.html

我应该期望在 hibernate-search-orm 5.7.0.Final 中找到它。但据我所知,这个 jar 只包含 org.hibernate.search 包,没有 org.hibernate.query 包。在该 jar 中的任何其他包中也找不到该类,但它存在于类路径上的许多其他包中。

有问题

javax.persistence.Query

如果是这样,用什么代替?还是其他地方的问题?

【问题讨论】:

    标签: spring-boot lucene spring-data-jpa hibernate-search


    【解决方案1】:

    休眠搜索5.7.0.Finalis only compatible with Hibernate ORM 5.2.3.Final and later。 您应该:

    • 将休眠搜索降级为5.6.1.Final
    • 或将 Hibernate ORM 升级到版本 5.2.3.Final 或更高版本。使用 Spring Boot,恐怕您将不得不使用 Spring Boot 的不稳定版本,即2.0.0.BUILD-SNAPSHOT

    编辑:实际上,您似乎可以将 Hibernate ORM 5.2+ 与 Spring Boot 1.5 一起使用;见this sample。不过请注意使用5.2.3.Final 或更高版本(示例使用5.2.0.Final,这不起作用)。


    顺便说一句,由于 OSGi 支持,您提供的链接仅提及 org.hibernate.query,这可能与您无关。碰巧hibernate-search-orm(将 Hibernate Search 集成到 Hibernate ORM 的模块)同时导入和重新导出了 org.hibernate.query 包,但它本身不提供。

    【讨论】:

      【解决方案2】:

      由于使用 5.7.0.Final jar,我遇到了同样的问题,并且它不兼容。通过更改降级 jar 版本解决了此问题。

      <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-search-orm</artifactId>
          <version>5.6.1.Final</version>
      

      【讨论】:

        猜你喜欢
        • 2020-11-13
        • 1970-01-01
        • 1970-01-01
        • 2018-07-25
        • 2016-10-22
        • 1970-01-01
        • 2016-06-15
        • 2020-05-30
        • 1970-01-01
        相关资源
        最近更新 更多