作者:Angle健少 | 来源:互联网 | 2024-12-06 14:36
在尝试将Hibernate Search 6(当前为Beta版)与Elasticsearch集成的过程中,我遇到了一些挑战。根据官方文档提供的指导(链接),我已经按照步骤进行了配置。然而,在启动应用程序时,遇到了一个错误,似乎这个问题之前没有人遇到过。
错误信息如下:
***************************
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.(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
根据文档,Hibernate Search 6.0.0.Beta2需要至少Hibernate ORM 5.4.7.Final版本的支持。而我当前使用的Hibernate ORM版本为5.3.11.Final,这可能是导致问题的原因之一。
由于Spring Boot 2.1默认提供了Hibernate ORM 5.3,因此建议升级至Spring Boot 2.2.1.RELEASE,该版本包含了兼容的Hibernate ORM 5.4。如果升级不可行,也可以通过在项目的POM文件中直接指定Hibernate ORM的版本来解决问题,例如设置如下属性:
5.4.7.Final
需要注意的是,理论上Hibernate ORM 5.4.4.Final及之后的版本都应能与Hibernate Search 6兼容,但为了确保稳定性,最好选择与Hibernate Search 6经过充分测试的版本。希望这些信息能够帮助到同样遇到此类问题的开发者。