编程语言
首页 > 编程语言> > java-如何在eclipselink中访问多个租户?

java-如何在eclipselink中访问多个租户?

作者:互联网

eclipselink(或Hibernate)中的租户是一个很好的概念,可以将数据域彼此分开.我在单表策略中使用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);
}

有没有方便的方法可以查询所有租户? (或者是仅在单个租户中定义持久对象的身份?)

解决方法:

EclipseLink有一个开放的功能请求,它允许以更好的方式允许管理服务器访问多租户数据:https://bugs.eclipse.org/bugs/show_bug.cgi?id=355458-如果对您很重要,请投票.

解决方法是为管理控制台创建一个单独的持久性单元.一种解决方法是将多租户元数据移至EclipseLink orm.xml文件,并在租户持久性单元中使用它,而admin持久性单元仅使用实体类.您可能希望实体中的字段可以映射到管理控制台可以使用和查询的“租户”列,但对于租户特定的持久性单元而言是只读或不可访问的.

标签:jpa,eclipselink,multi-tenant,java
来源: https://codeday.me/bug/20191029/1962404.html