You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3中Hibernate Search与Hibernate Core版本兼容问题

Spring Boot 3.1.2 集成 Hibernate Search 启动失败问题解决

问题场景

使用Spring Boot v3.1.2 + spring-boot-starter-data-jpa依赖,添加以下Hibernate Search依赖后,应用启动失败:

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

报错信息

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

描述:

尝试调用一个不存在的方法,调用位置如下:

    org.hibernate.search.cfg.impl.SearchConfigurationFromHibernateCore.<init>(SearchConfigurationFromHibernateCore.java:80)

不存在的方法为:

    'org.hibernate.MultiTenancyStrategy org.hibernate.boot.spi.SessionFactoryOptions.getMultiTenancyStrategy()'

调用方法的类org.hibernate.search.cfg.impl.SearchConfigurationFromHibernateCore加载路径:

    jar:file:/Users/smaillns/.m2/repository/org/hibernate/hibernate-search-orm/5.8.2.Final/hibernate-search-orm-5.8.2.Final.jar!/org/hibernate/search/cfg/impl/SearchConfigurationFromHibernateCore.class

被调用方法的类org.hibernate.boot.spi.SessionFactoryOptions的可用路径:

    jar:file:/Users/smaillns/.m2/repository/org/hibernate/orm/hibernate-core/6.2.6.Final/hibernate-core-6.2.6.Final.jar!/org/hibernate/boot/spi/SessionFactoryOptions.class
    jar:file:/Users/smaillns/.m2/repository/org/hibernate/hibernate-core/5.2.11.Final/hibernate-core-5.2.11.Final.jar!/org/hibernate/boot/spi/SessionFactoryOptions.class

被调用方法的类层次加载路径:

    org.hibernate.boot.spi.SessionFactoryOptions: file:/Users/smaillns/.m2/repository/org/hibernate/orm/hibernate-core/6.2.6.Final/hibernate-core-6.2.6.Final.jar


操作建议:

修正应用的类路径,使其包含org.hibernate.search.cfg.impl.SearchConfigurationFromHibernateCore与org.hibernate.boot.spi.SessionFactoryOptions的兼容版本

原因分析

Spring Boot 3.1.2 默认集成Hibernate ORM 6.2.6.Final,而hibernate-search-orm 5.8.2.Final属于Hibernate Search 5系列,仅兼容Hibernate ORM 5.x。两者版本不匹配导致API冲突:Hibernate ORM 6.x中已移除/修改了SessionFactoryOptions.getMultiTenancyStrategy()方法,Hibernate Search 5调用该方法时触发不存在的方法错误。

解决方案

方案1:升级Hibernate Search到兼容版本

使用适配Hibernate ORM 6.x的Hibernate Search 6.x版本,推荐借助Spring Boot的依赖管理自动匹配版本,无需手动指定版本号:

<dependency>
    <groupId>org.hibernate.search</groupId>
    <artifactId>hibernate-search-mapper-orm</artifactId>
</dependency>
<dependency>
    <groupId>org.hibernate.search</groupId>
    <artifactId>hibernate-search-backend-lucene</artifactId>
</dependency>

注意:Hibernate Search 6的API与5.x差异较大,需调整业务代码适配新API。

方案2:降级Spring Boot版本

若不想修改代码,可将Spring Boot降级到2.x系列(如2.7.x),该版本默认集成Hibernate ORM 5.x,与hibernate-search-orm 5.8.2.Final完全兼容。

内容的提问来源于stack exchange,提问作者Smaillns

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 22:30:28