在Hibernate中也可以通过SQLQuery对象调用数据库的存储过程,但是要求存储过程必须返回一个结果集。

如在Oracle数据库的一个存储过程为:

CREATE OR REPLACE PROCEDURE selectGuestbookById
(sp_ref OUT SYS_REFCURSOR,inputId IN guestbook.id%type)AS

BEGIN

 OPEN sp_ref FOR

   select *from guestbook where id=inputId;

END selectGuestbookById;


调用的过程如下:

要通过Hibernate调用selectGuestbookById存储过程,还需要在Guestbook.hbm.xml文件中为其命名

<sql-query name = “com.kkoolerter.beans.Guestbook.getGuestbookBySP” callable="true">

  <return alias="Guestbook" class = "com.kkoolerter.beans.Guestbook" />
  
  {call selectGuestbookById(?:inputId)}

</sql-query>

标签<sql-query>定义一个存储过程,name属性设置其名称,callable="true"表明这是一个存储过程<return>子标签设置返回记录封装的对象类型,{call selectGuestbookById(/:inputId)}是调用存储过程的代码。

调用存储过程的代码如下:

Query query = session.getNamedQuery(“com.kkoolerter.beans.Guestbook.getGuestbookBySP”);
query.setInteger("inputId",1);

Guestbook gb = (Guestbook)session.uniqueryResult(); 

转自:http://wujuxiang.blog.51cto.com/2250829/403698

相关文章:

  • 2021-04-04
  • 2021-07-17
  • 2022-12-23
  • 2022-12-23
  • 2021-12-08
  • 2021-11-27
  • 2022-12-23
  • 2021-09-05
猜你喜欢
  • 2022-01-03
  • 2021-04-22
  • 2021-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案