Oracleデータベースを使用してJavaEE/ JPA/CDIアプリを構築しています。データモデル(これは変更できません)は、ビューとclient_infoを使用してセキュリティを部分的に実装します...のようなものです。
create view the_view
as select *
from the_table
where organization_id = USERENV('CLIENT_INFO')
ここで、userenv('CLIENT_INFO')は、基本的に次の呼び出しによって設定されます。
dbms_application_info.set_client_info(11);
これで、基本的に永続コンテキストを挿入してクエリ(ネイティブクエリと通常のPOJOの両方)を実行する一連のステートレスBeanがあり、作成する前にクライアント情報(セキュリティコンテキストから取得できる)を永続コンテキストに挿入する方法が必要です。 EntityManagerへの呼び出し
一言で言えば、私はこれを呼び出すことができる必要があります。
@PersistenceContext
EntityManager em;
@Inject
UserInfo userInfo;
public TheView getTableData(long id) {
// At this point security Information should be set..
// Call the query
return em.find(TheView.class, id);
}
setClientInfo()を手動で呼び出す必要はありません。
これを行う1つの方法は、おそらくインターセプターを使用してメソッドに注釈を付け、そこで呼び出しを行うことです(メソッドが使用するPersistenceContextを取得できる場合...)これも機能しますか?
これを行う他の方法は??
TIA!