具有Hibernate多租户的分布式查询

时间:2012-12-04 22:30:44

标签: java hibernate jpa multi-tenant

我通过JPA使用Hibernate's multi-tenancy功能,database per tenant strategy。我的一个要求是能够针对每个数据库中存在的表运行查询,但显然具有不同的数据。这可能吗?

提前感谢您的时间。

1 个答案:

答案 0 :(得分:1)

不。这是不可能的,因为当hibernate运行查询时,它已经通过连接初始化。 Hibernate中的MT支持基本上是在“Hibernate之外”进行的。它有一种正常的连接方式,并且当它被馈送时,它就被绑定了。

如果您需要跨租户查询,您可能需要重新考虑多租户或将JPA提供商更改为支持“共享模式方法”的提供商,例如的EclipseLink。使用共享shema方法,您有两种选择:

  1. 运行包含mt-aware实体的本地查询agains表
  2. 创建其他实体 - 不要将其标记为多租户 - 将其映射到包含mt-ware实体的表并以标准方式运行JPQL查询