我尝试实施多租户支持。 鉴于限制和约束:
我的第一个尝试是将id和租户密钥映射为复合主键和@IdClass。所以我的所有实体基本上都是这样的:
@Entity
@IdClass(value = any.EntityPK)
public class Entity
{
private String id;
private String tenantKey;
//....
}
不幸的是,使用此解决方案,无法映射任何关系,因为租户密钥无法映射两次。例如,我跟随" OneToMany"数据库上的关系:
Table A (ID, tenantKey, AnyColumnTableA)
Table B (ID, tenantKey, AnyColumnTableB, ForeignKey_ID_TableA)
示例数据:
Table A(23, t01, Hello)
Table B(44, t01, Foo, 23)
Table B(45, t01, Bar, 23)
我没有看到针对此特定" OneToMany"的正确JPA映射。关系。 JPA要求表B中的租户密钥使用冗余列,我无法提供:
Table B(ID, tenantKey, AnyColumnTableB, ForeignKey_ID_TableA, ForeignKey_TenantKey_TableA)
e.g. Table B(23, t01, Foo, 23, t01)
其他关系类型也会出现同样的问题。我认为这是一个常见的问题,也许我的解决方案错误。所以请向我展示正确的映射或指导我在方案级别实施多租户支持的正确方法。