gpt4 book ai didi

java - EclipseLink:如何关闭 Multi-Tenancy ,即使我用@MultiTenant 注释实体

转载 作者:行者123 更新时间:2023-11-30 07:09:58 24 4
gpt4 key购买 nike

我将 EclipseLink 用于单表 Multi-Tenancy 。

我用@Multi-Tenant 注释了实体,一切正常。

是否可以在不做任何更改的情况下关闭 Multi-Tenancy ?

我知道有一个 org.eclipse.persistence.annotations.Multitenant.includeCriteria(),我可以将其关闭以禁用 Multi-Tenancy 。

但是我的解决方案是以Package方式打包交付的,没有办法将上面的属性设置为false。

我想要什么,即使我用 @Multi-Tenant 注释注释实体,甚至数据库中有一列 TENANT_ID,但是如果我没有设置 PersistenceUnitProperties.MULTITENANT_PROPERTY_DEFAULT 则它不应该抛出异常并且任何 CRUD 操作都应该成功。

    javax.persistence.PersistenceException: Exception [EclipseLink-6174] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.QueryException
Exception Description: No value was provided for the session property [eclipselink.tenant-id]. This exception is possible when using additional criteria or tenant discriminator columns without specifying the associated contextual property. These properties must be set through Entity Manager, Entity Manager Factory or persistence unit properties. If using native EclipseLink, these properties should be set directly on the session.

那么,是否有任何方式或任何自定义/扩展点,以便如果我设置

PersistenceUnitProperties.MULTITENANT_PROPERTY_DEFAULT 

那么它应该包括 TENANT_ID 作为标准,如果我没有设置而不是简单地它不应该包括 TENANT_ID 作为标准?

最佳答案

这似乎是 eclipselink 的未决问题。我已经发布了一个类似的问题 lately . Chris 发布了一个有用的答案,其中包含指向 feature request 的链接。 .描述的解决方法是对具有不同 Multi-Tenancy 设置的相同表使用多个持久性单元。

我正在尝试使用 alternative approach :我使用@AdditionalCriteria 而不是@Multitenant。此注释使您能够定义自己的请求条件,添加到任何数据库操作(除了少数异常(exception),如 native SQL)。

例子:

@AdditionalCriteria(":ADMINACCESS = 1 or this.tenant=:TENANT")

在创建实体管理器时设置参数。您可以提供关闭 Multi-Tenancy 的租户。这里的缺点是您要对租户属性负责。

关于java - EclipseLink:如何关闭 Multi-Tenancy ,即使我用@MultiTenant 注释实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22562770/

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