これは、OpenJPAを使用して再作成しようとしているOracleクエリです。私はWebsphere統合開発者でサービスを作成しており、選択したORMツールとしてOpenJPAを使用しています。以前は、このクエリはストアドプロシージャを使用して実行され、参照カーソルが使用され、そのように情報が取得されていました。現在、選択したツールとしてOpenJPAを使用しようとしています。したがって、OpenJPAを使用してストアドプロシージャを再構築する必要があると考えています...
SELECT DISTINCT
P.col1 as ID,
P.col2,
P.col3,
P.col4,
P.col5,
S.col6,
PC.col7,
P.col8,
A.ADDRESS_1,
A.ADDRESS_2,
A.ADDRESS_3,
A.CITY,
A.COUNTY,
A.STATE,
A.ZIP_CODE,
P.CONFIRMED_BY,
P.CONFIRMED_DATE,
P.MOD_USERID,
P.MOD_DATE
FROM EPCD13.PROVIDER P, EPCD13.provider_channel PC, EPCD13.provider_channel_link pcl,
EPCD13.provider_specialty ps, EPCD13.SPECIALTY S, EPCD13.Address A, EPCD13.ADDRESS_LINK AL
WHERE P.RESOURCE_ID = personID
AND P.RESOURCE_ID = PS.RESOURCE_ID (+)
AND 1 = PS.PRIMARY_SPECIALTY_ID (+)
AND PS.SPECIALTY_ID = S.SPECIALTY_ID (+)
AND P.RESOURCE_ID = PCL.RESOURCE_ID (+)
AND PCL.PROVIDER_CHANNEL_ID = PC.PROVIDER_CHANNEL_ID
AND 1 = PCL.PREFERENCE (+)
AND 9 = pc.channel_type_id (+)
AND PC.CHANNEL_ADDRESS NOT LIKE '%@%'
AND P.RESOURCE_ID = AL.RESOURCE_ID (+)
AND AL.ADDRESS_ID = A.ADDRESS_ID (+)
AND 1 = A.ADDRESS_TYPE_ID (+)
AND 1 = AL.PREFERENCE (+);
これらすべての内部結合などに注意してください。私は今、上記と同じ結果を返す名前付きクエリを1つのメソッドに入れることを考えています。お気づきかもしれませんが、そこで呼び出され、さまざまなポイントで結合されている複数のテーブルがあります...小さな変更を加えてこのクエリをcreateNamedQuery()関数に入れることができると思います...しかし、そうしなければならないと思いますこれを行うためのより簡単な方法でしょうか?そうでないかもしれない。JPAを使用してストアドプロシージャを呼び出すことはできますか?