Interface TenantAware
- All Known Implementing Classes:
TenantAwareEntity
public interface TenantAware
租戶感知介面
標記需要多租戶數據隔離的 Entity。實作此介面的 Entity 應具備帶
TenantId 的 tenantId 欄位——租戶過濾由 Hibernate 原生
discriminator 多租戶於 Session 建構時自動套用,不需任何手動 enable
(見 TenantContextIdentifierResolver、ADR-016)。
實作建議:
方式 1:繼承 TenantAwareEntity(首選)——@TenantId 欄位宣告與 root session
寫入守衛皆已備妥
@Entity
public class Customer extends TenantAwareEntity {
// ...
}
方式 2:無法繼承時(單一繼承已被其他基類占用),直接實作本介面並自行宣告
@TenantId 欄位。宣告方式須對齊 TenantAwareEntity(length = 36, nullable = false, updatable = false;不得加 @NotBlank,理由見該類 javadoc)
@Entity
public class Customer extends SomeOtherBase implements TenantAware {
@TenantId
@Column(name = "tenant_id", length = 36, nullable = false, updatable = false)
@Size(max = 36)
private String tenantId;
@Override
public String getTenantId() { return tenantId; }
@Override
public void setTenantId(String tenantId) { this.tenantId = tenantId; }
}
- See Also:
-
Method Summary
Modifier and TypeMethodDescription取得此 Entity 所屬的租戶 IDvoidsetTenantId(String tenantId) 設定此 Entity 所屬的租戶 ID
-
Method Details
-
getTenantId
-
setTenantId
設定此 Entity 所屬的租戶 ID
一般情況由 Hibernate
@TenantId於寫入時自動注入,不需手動呼叫;root session 要替特定租戶建立資料時才顯式設定(見TenantAwareEntity的守衛說明)。- Parameters:
tenantId- 租戶 ID
-