我有一个映射存储过程
<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并返回一个空列表,但这不是很好,还有什么我可以做的吗?
答案 0 :(得分:1)
根据这个hibernate docs,mssql存储过程必须返回一个结果集。此外,在第16.2.2.1节中,它声明您可以使用session.connection()。但我认为这不会有多大用处。因此处理空指针似乎是一个好方法。
编辑:
如果您使用session.connection()
,如果输出是过程中唯一用于获取更改行数的输出,则还可以返回@@ROWCOUNT
。 0表示没有返回