2016-04-26 38 views
0

javaxまたはEclipseリンク@NamedStoredProcedureQueryを使用して、カーソルまたは出力パラメータを持たないSQL Serverストアドプロシージャを呼び出して、結果を手動でマップします。JPA 2.1、Eclipselink、SQL Server、Spring - NamedStoredProcedureQuery結果マッピング

スプリングを使用すると、OUTパラメータが自動的に追加され、パラメータが多すぎるというエラーがデータベースから返されます。これは意味があります。私がしなければ、私は無効を返すことができますが、結果を得る方法がありません。

パラメータをマッピングして手動で結果セットをマッピングすると、すべてのボイラープレートコードを回避する方法はありますか?私は共有されているので、ストアドプロシージャを変更する能力は限られています。

OUTパラメータまたはCursorを持たないストアドプロシージャのエンティティを使用して結果をマップする方法の例を探しています。 (私はそれが可能ではないと思うが、私より長く(2日間)使っている人からそれを聞きたい)

PS私はこれをOracleを使って見たことがありますが、 outパラメータが定義されています。

ALTER PROCEDURE [dbo].[spGetInstitution] -- Add the parameters for the stored procedure here @InstitutionID INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here SELECT a.InstitutionID, a.DisplayName FROM tblInstitution a WHERE a.InstitutionID = @InstitutionID END

答えて

1

あなたはStoredProcedureQueryのためのドキュメントを見たことがありますか?プロシージャーが結果セットを戻す場合、必要な場合には、照会の作成時にresultClassesまたはresultSetMappingsを指定すると、getResultListが機能します。以下のような

何か:

StoredProcedureQuery query = em.createStoredProcedureQuery("spGetInstitution", Institution.class); 
query.registerStoredProcedureParameter("InstitutionID", Integer.class, ParameterMode.IN); 
query.setParameter("InstitutionID", institutionID); 

boolean result = query.execute(); 
assertTrue("Result did not return true for a result set.", result); 

List<Institution> institutionResults = query.getResultList(); 
+0

私が使用して終了するものです。私は手作業でパラメータをマップする必要がないことを望んでいました。なぜなら、これらの書き込みを行うのに数百個があり、@Procedureはそれを可能にするからです。インターネットを精練して2日後、私はこれがオプションを考えれば最高の解決策だと思う。 – blur0224

関連する問題