繁体   English   中英

Spring Boot + JPA + Hibernate不同的表名前缀

[英]Spring Boot + JPA + Hibernate different table name prefix

我正在使用多租户应用程序(具有旧的数据库结构),在该应用程序中我有一个公共用户表和一组基于访问权限的表。

例如,如果用户可以使用不同公司C1和C2的发票,则数据库包含名称为C1_invoice和C2_invoice的表。

我能够使用org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl向一家公司添加前缀

这样我就可以访问C1_invoice表。 但是,如何动态选择前缀C1或C2?

您可以使用这种方法的变体。

通过提供自定义的MultiTenantConnectionProvider它基本上是在Spring Data中使用hibernate的多租户功能。 连接提供程序从数据源映射中读取连接详细信息。 您可以在每个数据源中为hibernate.physical_naming_strategy提供不同的值。 不过,我不确定是否可以将每个数据源的前缀指定为属性。 您最终可能会为每个租户使用一个单独的PhysicalNamingStrategy子类。 可能很可怕。

您正在使用哪个数据库? 或者,您可以通过为每个租户提供一个架构,并使用不带前缀的名称将其表从默认架构中别名来解决该问题,具体方法如下:

CREATE SYNONYM C1.INVOICE FOR DEFAULT.C1_INVOICE;

这样,您可以使用Hibernate的标准MultitenancyStrategy.SCHEMA策略。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM