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

Hibernate 6中MultiTenancyStrategy是否弃用?Spring Boot3多租户配置求助

解决方案

在Spring Boot 3(对应Hibernate 6.x版本)中,MultiTenancyStrategy类已被移除,因此无法直接引用。解决这个问题的核心是直接使用字符串常量指定多租户策略,替代原来的枚举类。

修改后的代码

Map<String, Object> properties = new HashMap<>(this.jpaProperties.getProperties());
properties.put(AvailableSettings.PHYSICAL_NAMING_STRATEGY, "org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy");
properties.put(AvailableSettings.IMPLICIT_NAMING_STRATEGY, "org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy");
properties.put(AvailableSettings.BEAN_CONTAINER, new SpringBeanContainer(this.beanFactory));
properties.remove(AvailableSettings.DEFAULT_SCHEMA);
// 替换原来的MultiTenancyStrategy.SCHEMA为字符串常量"SCHEMA"
properties.put(AvailableSettings.MULTI_TENANT, "SCHEMA");
properties.put(AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER, connectionProvider);
properties.put(AvailableSettings.MULTI_TENANT_IDENTIFIER_RESOLVER, tenantResolver);
emfBean.setJpaPropertyMap(properties);

额外注意事项

  • 确保connectionProvider实现的是Hibernate 6.x版本的org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider接口,Hibernate 6对该接口的方法签名有调整。
  • 租户解析器tenantResolver需实现org.hibernate.context.spi.TenantIdentifierResolver接口,保持与Hibernate 6的兼容性。
  • 确认项目依赖中Hibernate Core的版本与Spring Boot 3的版本匹配(Spring Boot 3默认集成Hibernate 6.x),避免版本冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:15:14