关于Java:具有Hibernate多租户的分布式查询

Distributed query with Hibernate multi-tenancy

我正在通过JPA使用Hibernate的多租户功能,以及每个租户策略的数据库。我的要求之一是能够对每个数据库中都存在但显然具有不同数据的表运行查询。这可能吗?

在此先感谢您的时间。


不。这是不可能的,因为当hibernate运行查询时,它已经使用连接进行了初始化。 Hibernate中的MT支持基本上是在Hibernate之外进行的。这是一种通过适当的连接来使hibernatehibernate的方法,当它被馈送时:)它已绑定到该连接。

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

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