我打算編寫一個使用Spring Data JPA作爲持久層的多租戶感知應用程序。但是我不打算爲每個租戶保留單獨的數據庫,而是將所有數據都放在一個數據庫中。以下豆代表我打算實施的項目實體和租戶實體。在獲取項目或獲取所有項目列表時,我應該能夠根據特定租戶進行過濾。我知道我可以通過編寫像bindByIdAndTenant_Id(int id,int id)這樣的方法來實現這一點,但我擔心解決方案的可伸縮性。我需要的是有一個像findById(int id)這樣的方法,並且內容將被從上下文中獲取的tenant id自動過濾。有沒有辦法在Spring Data JPA中做到這一點?在Spring數據上實現多租戶JPA
項目實體
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
@Column(name = "DESCRIPTION")
private String description;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "TENANT_ID", referencedColumnName = "id", foreignKey = @ForeignKey(name = "FK_TENANT_IN_PROJ"))
private Tenant tenant;}
租客實體
public class Tenant {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
int id;
@Column(name = "NAME", unique = true)
private String name;}
您可以嘗試使用作爲某些JPA實現的擴展提供的多租戶功能(請參閱例如https://wiki.eclipse.org/EclipseLink/Examples/JPA/Multitenant和here:https:// docs。 jboss.org/hibernate/orm/5.0/userguide/html_single/chapters/multitenancy/MultiTenancy.html)。在撰寫本文時,您的用例(即使用鑑別器列)在Hibernate中未實現。但是,它在EclipseLink中得到了支持。 – crizzis