Jakarta ee 如何在多租户环境中使用JPA@Column(unique=true)?

Jakarta ee 如何在多租户环境中使用JPA@Column(unique=true)?,jakarta-ee,jpa-2.0,eclipselink,multi-tenant,Jakarta Ee,Jpa 2.0,Eclipselink,Multi Tenant,我想将我的应用程序转换为支持使用共享表的多租户(即,每个表都有一个租户id)。显然,我将无法再使用@Column(unique=true),因为它将强制所有租户都具有唯一性,这是我不想要的 我正在使用Glassfish 3.1.1和EclipseLink。是否有办法使@Column(unique=true)强制每个租户(而不是每个表)具有唯一性。或者我必须在业务逻辑中强制执行这一点吗?EclipseLink支持使用自定义注释(@multi-tenant、@TenantDiscriminatorC

我想将我的应用程序转换为支持使用共享表的多租户(即,每个表都有一个租户id)。显然,我将无法再使用
@Column(unique=true)
,因为它将强制所有租户都具有唯一性,这是我不想要的


我正在使用Glassfish 3.1.1和EclipseLink。是否有办法使
@Column(unique=true)
强制每个租户(而不是每个表)具有唯一性。或者我必须在业务逻辑中强制执行这一点吗?

EclipseLink支持使用自定义注释(
@multi-tenant
@TenantDiscriminatorColumn
@TenantDiscriminatorColumns
)或
EclipseLink orm.xml
文件中的等效属性的多租户。有关如何使用此受支持功能的更多信息,请参阅;你可以在Youtube上找到一个


因此,我假设仅使用
@Unique
注释是不可能的。

也可以在
@Table
注释上指定唯一性约束,例如

@Table(name = "USERS", uniqueConstraints = @UniqueConstraint(columnNames = {"TENANT_ID", "username"}))

我以前看过EclipseLink中的多租户支持,但它似乎不支持在运行时添加租户。如果你看一下屏幕,每个租户的应用程序代码都是重复的。因此,我将通过在每个列和查询中添加租户ID来手动实现多租户支持。你在eclipselink中尝试过多租户吗?除了屏幕广播之外,我没有尝试过任何东西,但是如果你仔细看示例,你可以在运行时设置租户Id(
eclipselink.tenant Id
),如果这就是你在运行时添加租户的意思。是的,事实证明你可以在运行时设置属性。