Java JPA 2.0无供应商特定功能的多租户关系
我尝试实现多租户支持。 给定的限制和约束:Java JPA 2.0无供应商特定功能的多租户关系,java,jpa,jpa-2.0,entity-relationship,multi-tenant,Java,Jpa,Jpa 2.0,Entity Relationship,Multi Tenant,我尝试实现多租户支持。 给定的限制和约束: JPA2.0(JavaEE6)没有特定于供应商的功能(Hibernate、EclipseLink等) 共享方案多租户级别。基本上每个表都有一个唯一的字符串和租户鉴别器作为主键(Id,TenantKey) 我的第一次尝试是将id和租户密钥映射为复合主键和@IdClass。所以我所有的实体基本上都是这样的: @Entity @IdClass(value = any.EntityPK) public class Entity { private St
- JPA2.0(JavaEE6)没有特定于供应商的功能(Hibernate、EclipseLink等)
- 共享方案多租户级别。基本上每个表都有一个唯一的字符串和租户鉴别器作为主键(Id,TenantKey)
@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)
我没有看到正确的JPA映射用于这个特定的“一家公司”关系。JPA要求表B中的租户密钥有一个冗余列,我无法提供:
Table B(ID, tenantKey, AnyColumnTableB, ForeignKey_ID_TableA, ForeignKey_TenantKey_TableA)
e.g. Table B(23, t01, Foo, 23, t01)
同样的问题也发生在其他关系类型上。我认为这是一个常见的问题,也许我的解决方案走错了方向。因此,请向我展示正确的映射,或者指导我在方案级别实现多租户支持的正确方法