当前位置: 首页 > 知识库问答 >
问题:

支持JPA eclipselnk多租户

燕昊东
2023-03-14

我有一个JPA应用程序正在运行,现在我想支持多租户。我喜欢使用XML而不是注释。

我有两个orm。从持久性引用的xml。xml。

<entity-mappings 
    xmlns="http://java.sun.com/xml/ns/persistence/orm"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
    version="2.0">

    <package>mypackage</package>

    <entity class="Foo" />
    <entity class="Bar" />

</entity-mappings>

我喜欢对所有实体使用相同的多租户配置:单个表,鉴别器列是tenantUserId,上下文属性是tenant。用户ID。

根据:https://wiki.eclipse.org/EclipseLink/Examples/JPA/EclipseLink-ORM.XML

<tenant-discriminator-column name="tenantUserId" context-property="tenant.userId"/> 

是否将线放在上面?我尝试创建eclipselink-orm.xml如下

<?xml version="1.0" encoding="UTF-8" ?>
<entity-mappings
    xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.eclipse.org/eclipselink/xsds/persistence/orm http://www.eclipse.org/eclipselink/xsds/eclipselink_orm_2_1.xsd"
    version="2.1">

    <tenant-discriminator-column name="tenantUserId" context-property="tenant.userId"/>

    <persistence-unit-metadata> 
        <persistence-unit-defaults>
            <tenant-discriminator-column name="tenantUserId" context-property="tenant.userId"/> 
        </persistence-unit-defaults>
    </persistence-unit-metadata>
</entity-mappings>

根据模式,两者都是无效的。放在哪里eclipselink-orm.xml?

有没有办法说:所有实体都是多租户(单表)?是否必须为所有实体逐个指定它们?

<entity-mappings 
    xmlns="http://java.sun.com/xml/ns/persistence/orm"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
    version="2.0">

    <package>mypackage</package>

    <entity class="Foo" >
      <multi-tenant/>
    </entity>

    <entity class="Bar" >
      <multi-tenant/>
    </entity>

</entity-mappings>

谢谢

共有1个答案

阎令
2023-03-14

从…起http://www.eclipse.org/eclipselink/documentation/2.5/solutions/multitenancy002.htm您正在正确使用持久性单元默认值,如下所示:

<persistence-unit-metadata> 
    <persistence-unit-defaults>
        <tenant-discriminator-column name="tenantUserId" context-property="tenant.userId"/> 
    </persistence-unit-defaults>
</persistence-unit-metadata>

问题是您使用了错误的架构版本。2.1没有包括多租户功能,因此您需要使用2.5 xds、eclipselink\u orm\u 2\u 5。xsd。这应该在eclipselink中。jar或从git中提取,如James所述http://git.eclipse.org/c/eclipselink/eclipselink.runtime.git/tree/jpa/org.eclipse.persistence.jpa/resource/org/eclipse/persistence/jpa

 类似资料:
  • 我们目前的开发基于多租户中的鉴别器模型。以下是我们目前正在使用的技术堆栈, Spring3.1.1。释放 Hibernate4.1.6。最终版本 我们通过在每个表中分别保留一列来维护租户id。创建会话时租户id筛选器。 示例模型类。 这是会话工厂的配置 租户基础会话工厂 示例服务类 示例DAO类 我想知道有没有一种方法可以通过这个数据库事务鉴别器模型获得spring事务支持?另一件事是,我想知道将

  • 目前为止,我们已经让用户页面在多租户风格下工作。为使它工作,我们看起来并没有做太多的变化。但请记住,我们正在对一个原来不是多租户的系统作修改。 让我们在 Roles 表应用类似的原则。 再一次,一个租户的用户在不能查看或修改其他租户的角色,每个租户的用户是相互独立工作的。 我们先在 RoleRow.cs 添加 TenantId 属性: namespace MultiTenancy.Administ

  • 为您的 Flarum 添加新的界面语言很简单。按照下面的说明,下载并安装语言包即可。 在您安装并启用一个语言包后,您可以将其 设置为您论坛的默认语言。当您可以 随时禁用 用不到的语言。如果您有使用任何第三方扩展,请务必在开始前 阅读社区扩展说明。 欲开始,请访问 Flarum 社区上的 Extensions > Languages 标签,并找到您想要安装的语言包。 语言包的安装方式与 扩展 相同。

  • 我们在第十章介绍过国际化和本地化,开发了一个go-i18n库,这小节我们将把该库集成到beego框架里面来,使得我们的框架支持国际化和本地化。 i18n集成 beego中设置全局变量如下: Translation i18n.IL Lang string //设置语言包,zh、en LangPath string //设置语言包所在位置 初始化多语言函数: fu

  • 多请求支持 控制台编辑器允许您编写相互层叠的多个请求,像在控制台章节展示中那样,您可以通过定位光标并使用动作菜单向 Elasticsearch 提交请求。类似的,您可以一次选择多个请求: 图 5. 选择多个请求 控制台会依次提交请求到 Elasticsearch ,并将 Elasticsearch 返回的结果显示在右边窗口。这在调试问题或在多个场景中尝试查询组合时会非常方便。 选择多个请求还允许您

  • 本文向大家介绍ThinkPHP多语言支持与多模板支持概述,包括了ThinkPHP多语言支持与多模板支持概述的使用技巧和注意事项,需要的朋友参考一下 本文以实例形式简述了ThinkPHP的多语言支持与多模板支持。是ThinkPHP中非常重要的技巧,分享给大家供大家参考。具体如下: 一、ThinkPHP多语言支持: config.php配置文件中添加: Home/Lang/文件夹下建立三个文件夹,分别