gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:35 24 4
gpt4 key购买 nike

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 有一个开放的功能请求,以提供一种允许管理服务器访问 Multi-Tenancy 数据的更好方法:https://bugs.eclipse.org/bugs/show_bug.cgi?id=355458 - 如果它对你很重要,请投票。

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

关于java - 如何在eclipselink中访问多个租户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22493607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com