我想将我的应用程序转换为使用共享表支持多租户(即每个表都获得一个租户ID)。显然,我将无法再使用@Column(unique = true)
,因为它会强化所有租户的唯一性,这是我不想要的。
我正在使用带有EclipseLink的Glassfish 3.1.1。是否有办法使每个租户(而不是每个表)强制@Column(unique = true)
强制唯一性。或者我是否必须在业务逻辑中强制执行此操作?
答案 0 :(得分:10)
也可以在@Table
注释中指定唯一性约束,例如
@Table(name = "USERS", uniqueConstraints = @UniqueConstraint(columnNames = {"TENANT_ID", "username"}))
答案 1 :(得分:1)
EclipseLink支持多租户使用自定义注释(@Multitenant
,@TenantDiscriminatorColumn
和@TenantDiscriminatorColumns
)或eclipselink-orm.xml
文件中的等效属性,自version 2.3.0起。有关如何使用此受支持功能的更多信息,请参见EclipseLink wiki;在Youtube上可以找到associated screencast。
因此,我认为单独使用@Unique
注释是不可能的。