如何使用spring和hibernate调用存储过程

时间:2010-06-30 11:21:34

标签: java hibernate spring stored-procedures orm

我收到错误消息java.lang.reflect.UndeclaredThrowableException和无效的列名称。你能帮帮我,为什么我会收到这个错误。

1 个答案:

答案 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>   效率更高,但这不是一个   要求。
  •   

一旦您的代码与规则保持一致,如果仍然出现错误,请提供完整的错误消息。