eclipselink(或Hibernate)中的租戶是將數據域彼此分開的絕佳概念。我正在使用單桌戰略的eclipselink。如何訪問eclipselink中的多個租戶?
有時需要從多個租戶(例如出於管理目的)訪問數據。有沒有一個很好的方法來實現這一目標? (我不想通過所有租戶運行來收集數據...)
例子:
@Entity
@Multitenant
@TenantDiscriminatorColumn(name = "TENANT", contextProperty = "tenant.id")
public class TenantEntity {
...
我可以用參數化實體管理器訪問一個特定租戶的對象:
private static EntityManager newEntityManager(String tenant) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("tenant.id", tenant);
return emf.createEntityManager(map);
}
是否有任何方便的方式來查詢所有租戶? (或者是僅在單個租戶中定義的持久對象的身份?)
偉大的提示,謝謝。所以 - 直接做這件事是一個懸而未決的問題。而接受的解決方法是使用兩個單獨的持久性單位。 這也意味着身份通過多個租戶得到保證(在所有租戶中只有一個具有特定ID的特定類的對象)。 –
這種具有多個持久性單元的方法是否也可以使用註釋?你有什麼提示嗎? –
註解位於共享類中,因此會被兩個持久性單元拾取。任何特定於某個持久性單元的內容都應移至僅包含在該持久性單元中的orm.xml中。 Orm.xml允許覆蓋註釋,但我不確定如何覆蓋租戶註釋,因此您可能必須將其放入租戶特定的eclipselink-orm.xml中。 – Chris