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()。但我认为这不会有太大用处。因此处理空指针似乎是一个好方法。

编辑 :

如果您正在使用session.connection(),您还可以返回@@ROWCOUNT如果输出是过程中唯一用于获取更改的行数的内容。0 表示不返回任何内容

于 2012-04-30T12:38:45.077 回答