2012-04-30 8 views
0

私は、マッピングされたストアドプロシージャを持っているヌル・ポインタ休止状態からMSSQL 2008ストアドプロシージャを呼び出すときに4

名前付きクエリとして実行し、ストアドプロシージャの結果を返しますが、その後 query.list()が期待される結果を返しますが、保存されたとき
<sql-query name="sproc" callable="true" > 
    <return alias="suppliers" class="model.Supplier"> 
     <return-property name="name" column="CoName" /> 
    </return> 
    { call sproc(:p1,:p2,:p3} 
</sql-query> 

プロシージャは結果を返しません。Hibernateが返すエンティティを初期化しようとしているときにNPEを取得します。

私はnpeを捕まえて空のリストを返すことができましたが、それは素晴らしいことではありません、他に何ができますか?

答えて

1

このhibernate docsによると、mssqlストアドプロシージャは結果セットを返す必要があります。さらに、セクション16.2.2.1では、session.connection()を使用できることを示しています。しかし、私はそれが大いに役立つとは思わない。したがって、nullポインタを処理することは良い方法のようです。

EDIT:あなたはsession.connection()を使用している場合は、出力が変更された行の数を取得するための手順で使用されている唯一のものである場合

、あなたも@@ROWCOUNTを返すことができます。 0が返されないことを示す