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

时间:2011-07-22 06:24:45

标签: java-ee jpa-2.0 eclipselink multi-tenant

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

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

2 个答案:

答案 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注释是不可能的。