2017-04-06 7 views
1

SpringブートJPAと休止状態のJPAを使用してマルチテナントWebアプリケーションを開発しています。Spring Dataすべてのリポジトリメソッドを継承するJPAグローバルフィルタ句

マルチテナントは、ほぼすべてのテーブルに外部キーとして配線されている組織テーブルを持つことで実現します。これは、すべてのDB呼び出し(Springデータリポジトリクエリメソッド)を組織IDでチェックする必要があることを意味します。

私は、この "organization_id =?"という方法が必要です。すべてのクエリメソッドに対して自動的に挿入されるようにチェックします。開発者は組織のIDチェックを特に気にする必要はありません。

これはSpring Data JPAフレームワークから達成できますか?このアプローチの賛否両論は何ですか?

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

+0

[複数DBの同じ持続性ユニットとから読む?](http://stackoverflow.com/questions/8402835/reading-from-multiple-dbs-with-same-persistence-unit)の可能性のある重複 – manish

+0

私はそれが重複だとは思わない。私はまた、そのようなことをする方法を知りたいと思いますが、完全な吹き抜けのマルチテナシーはありません。 –

+0

Robertと同意します。それは複数のDbsではない。同じ持続性ユニットを持つ同じDbです。これを達成するための提案はありますか? – J4Priyan

答えて

0

あなたは、基本クラスを持っている場合、あなたはorg.hibernate.annotations.Filter @使用することができますBaseEntityを言う:BaseEntityで

  1. @FilterDef(名前= "organizationFilter"、パラメータ= @ParamDef(名= "ORGID"、タイプ= "長い")) @Filter(名= "organizationFilter"、状態= "LANG_ID = ORGID")セッションの初期化時に

  2. (JpaTransactionManager.createEntityManagerForTransactionをオーバーライド()?):

    session.enableFilter( "organizationFilter")。setParameter( "orgId"、organization.getId());

関連する問題