2012-04-20 11 views
0

複数のOUTパラメータを含むストアプロシージャをデータベースに格納しています。私は結果セットを得るためにJPA(Hibernateと一緒に)を使いたいです。 OUTパラメータからすべての結果を得る方法はありますか?JPAは、複数の出力パラメータを含むデータベースでストアドプロシージャを呼び出します。

など。 CallableStatementを使用するときは、これらのパラメータに "。registerOutParameter"を使用できます。 JPAに相当するものが必要です(存在する場合/可能な場合)。

使用するデータベースはPostgreSQLです。

+0

SO上で「jpaストアドプロシージャ** CallableStatement **」(CollableStatementではなく)を検索してみてください。多くの良い答え! –

答えて

1

JPA2.1には、必要に応じてStoredProcedureのサポートがあります(まだ最終的ではありません)。このAFAIKのプレビュー機能を提供する唯一のJPA実装はDataNucleus JPAです。その他のJPAのimplsは、独自の非標準的なサポートを持っているので、ここではそのルート

0

を行くことを望むならば、あなたのマニュアルをチェックして、あなたは簡単に...カスタムリポジトリを実装することにより、スプリングのデータJPAリポジトリから

  1. をストアドプロシージャを呼び出すことができますインターフェイスを作成し、メソッドを定義します。
  2. それは以下のメソッドの実装の下@Repository
  3. に注釈を付けるためのimplを作成tiが

    StoredProcedureQuery storedProcedure = entityManager.createStoredProcedureQuery("Your Stored Procedure name"); 
    
    // Set the parameters of the stored procedure. 
    String firstParam = "first param name"; 
    storedProcedure.registerStoredProcedureParameter(firstParam, Long.class, ParameterMode.IN); 
    storedProcedure.setParameter(firstParam, first Param value); 
    
    // Set the second parameters of the stored procedure. 
    String secondParam = "second parameter name"; 
    storedProcedure.registerStoredProcedureParameter(secondParam, String.class, ParameterMode.IN); 
    storedProcedure.setParameter(secondParam, "second paramter value); 
    
    //Your OUT parameters. 
    storedProcedure.registerStoredProcedureParameter("First OUT parameter name", Integer.class, ParameterMode.OUT); 
    storedProcedure.registerStoredProcedureParameter("OUT second parameter name", Integer.class, ParameterMode.OUT); 
    storedProcedure.execute(); 
    //Replace MyObject with your actual POJO 
    MyObject myObject= new MyObject(); 
    myObject.setFirstParameterOutput((Integer) storedProcedure.getOutputParameterValue("first OUT parameter name")); 
    myObject.setSecondParameterOutput((Integer) storedProcedure.getOutputParameterValue("second OUT parameter name")); 
    return MyObject; 
    

注実装する方法です:ノエはも、あなたは注釈@Procedure

により、リポジトリ自体から呼び出すことができますが
@Procedure 
public Integer procedure_name(String firstParameter, Date secondParameter); 

} 
関連する問題