eclipselink(或 Hibernate)中的租户是一个很好的概念,可以将数据域彼此分开。我正在使用 eclipselink 和单表策略。
有时需要访问多个租户的数据(例如出于管理目的)。有没有好的方法可以实现这一目标? (我不想跑遍所有租户来收集数据......)
Example:
@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 文件,并在租户持久性单元中使用它,而管理持久性单元仅使用实体类。您可能希望实体中的一个字段可以映射到管理控制台可以使用和查询的租户列,但该字段是只读的或租户特定的持久性单元无法访问。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)