Hibernate-Search 6 和 Elasticsearch 集成

Hibernate-Search 6 and Elasticsearch integration

我在 Hibernate Search 应用程序中工作,我正在尝试使用版本 6(目前处于测试阶段)。我遵循了 https://docs.jboss.org/hibernate/search/6.0/reference/en-US/html_single/#getting-started-configuration

中的所有说明和文档

尝试启动我的应用程序后出现下一个错误:

我看过Google,好像我是世界上第一个遇到这个问题的人。

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    org.hibernate.search.mapper.orm.mapping.impl.HibernateOrmIndexedTypeContext.<init>(HibernateOrmIndexedTypeContext.java:35)

The following method did not exist:

    org.hibernate.metamodel.spi.MetamodelImplementor.entity(Ljava/lang/Class;)Lorg/hibernate/metamodel/model/domain/spi/EntityTypeDescriptor;

It was loaded from the following location:

    file:/home/myUser/.m2/repository/org/hibernate/hibernate-core/5.3.11.Final/hibernate-core-5.3.11.Final.jar


Action:

Correct the classpath of your application so that it contains a single, compatible version of org.hibernate.metamodel.spi.MetamodelImplementor

知道如何解决吗?在我的应用程序中,我正在使用 Spring boot 和 jpa。

here in the documentation 所示,Hibernate Search 6.0.0.Beta2 需要 Hibernate ORM 5.4.7.Final 或更高版本。您正在使用 Hibernate ORM 5.3.11.Final.

我认为 Spring Boot 2.1 附带 ORM 5.3,所以这可能就是您正在使用的。

最好的做法是升级到 Spring Boot 2.2。1.RELEASE,它随 Hibernate ORM 5.4 一起提供。

如果那不可能,您仍然可以继续使用 Spring Boot 2.1 并直接在您的 POM 中覆盖 Hibernate ORM 的版本:据我所见,它在 Spring 启动 2.1.

只需在您的 POM 中设置此 属性:

    <properties>
        <!-- Override the version of Hibernate ORM in Spring Boot -->
        <hibernate.version>5.4.7.Final</hibernate.version>
    </properties>

请注意,从技术上讲,Hibernate ORM 5.4.4.Final 之后的任何版本都应该可以工作,但坚持使用 Hibernate Search 测试过的版本通常更安全。