2011-12-21 7 views
3

カーソルを返すoracleストアド・ファンクションの結果に基づいて、いくつかのエンティティをマップしようとしています。インデックス:: 3hibernateとoracle関数を使用してエンティティをマップする方法

で欠落INまたはOUTパラメータ:

ます。java.sql.SQLException:私は次の例外を取得し、このコードで

this.getSession().createSQLQuery("{?=call my_pkg.my_func(:myPar1,:myPar2)}") 
       .addEntity(MyTargetClass.class) 
       .setParameter("myPar1",par1) 
       .setParameter("myPar2",par2) 
       .list(); 

私のコードは次のようになります欠けているパラメータがカーソルであることをHibernateにどのように伝えることができますか?

これによれば可能ですが、実際に関数を呼び出すサンプルコードはありません。

答えて

2

名前付きクエリでマッピングする必要があり休止状態でこのクエリを使用するには、ドキュメントへのリンクを、

によります。だから、

、このような名前のクエリを作成します。

<sql-query name="my_pkg_my_func_SP" callable="true"> 
    <return alias="..." class="MyTargetClass"> 
     <return-property name="..." column="..."/> 
     ... 
    </return> 
    { ? = call my_pkg.my_func(:myPar1,:myPar2) } 
</sql-query> 

をそして、このような何か使用してそれを呼び出す:

final List<MyTargetClass> myTargetClassList = 
    this.getSession().getNamedQuery("my_pkg_my_func_SP") 
    .setParameter("myPar1", par1) 
    .setParameter("myPar2", par2) 
    .list(); 
関連する問題