![](/img/trans.png)
[英]Spring boot JPA insert in TABLE with uppercase name with 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.