我收到错误消息java.lang.reflect.UndeclaredThrowableException
和无效的列名称。你能帮帮我,为什么我会收到这个错误。
答案 0 :(得分:0)
我建议遵循文档的建议:
16.2.2.1. Rules/limitations for using stored procedures
您无法使用存储过程 Hibernate,除非你遵循一些 程序/功能规则。如果他们这样做 不遵循他们不遵守的规则 可用于Hibernate。如果你还是 想要使用这些程序 通过执行它们
session.connection()
。规则是 因为每个数据库都不同 数据库供应商有不同的存储 过程语义/语法。存储过程查询不能 分页
setFirstResult()/setMaxResults()
。推荐的致电表格是标准的 SQL92:
{ ? = call functionName(<parameters>) }
或{ ? = call procedureName(<parameters>}
。 不支持本机调用语法。对于 Oracle ,以下规则适用:
- 函数必须返回结果集。 a的第一个参数 程序必须是返回的OUT 结果集。这是通过使用a来完成的 在Oracle 9或10中键入
SYS_REFCURSOR
。 在Oracle中,您需要定义REF CURSOR
类型。请参阅Oracle文献 进一步的信息。对于Sybase或MS SQL服务器 以下规则适用:
- 该过程必须返回结果集。请注意,因为这些 服务器可以返回多个结果 设置和更新计数,Hibernate会 迭代结果并采取第一个 结果是一个结果集 回报价值。其他一切都将是 丢弃。
- 如果您可以在程序中启用
SET NOCOUNT ON
,则可能是。{li> 效率更高,但这不是一个 要求。
一旦您的代码与规则保持一致,如果仍然出现错误,请提供完整的错误消息。