2

JPA を介してHibernate のマルチテナンシー機能を使用し、テナントごとのデータベース戦略を使用しています。私の要件の 1 つは、各データベースに存在するが明らかに異なるデータを持つテーブルに対してクエリを実行できることです。これは可能ですか?

お時間をいただきありがとうございます。

4

1 に答える 1

1

いいえ。hibernateがクエリを実行すると、すでに接続で初期化されているため、これは不可能です。HibernateでのMTサポートは、基本的に「Hibernateの外」で少し行われます。これは、適切な接続で休止状態にフィードするようなものであり、フィードされると、その接続にバインドされます:)。

クロステナントクエリが必要な場合は、マルチテナンシーを再検討するか、JPAプロバイダーを「共有スキーマアプローチ」をサポートするプロバイダー(EclipseLinkなど)に変更することをお勧めします。共有シェマアプローチでは、2つの選択肢があります。

  1. mt-awareエンティティを含むテーブルに対してネイティブクエリを実行します
  2. 追加のエンティティを作成します-マルチテナントとしてマークしないでください-mt-wareエンティティを含むテーブルにマップし、標準的な方法でJPQLクエリを実行します
于 2012-12-05T11:02:33.173 に答える