0

マップされたストアドプロシージャがあります

<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>

名前付きクエリとして実行され、ストアドプロシージャが結果query.list()を返す場合、期待される結果が返されますが、ストアドプロシージャが結果を返さない場合、Hibernateがエンティティを初期化して返すときにNPEを取得します。

npeをキャッチして空のリストを返すことはできますが、それは素晴らしいことではありません。他にできることはありますか?

4

1 に答える 1

1

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

編集 :

を使用している場合は、変更された行数を取得するためにプロシージャで使用されているのが出力のみである場合は、session.connection()を返すこともできます。@@ROWCOUNT0は何も返されないことを示します

于 2012-04-30T12:38:45.077 に答える