Hibernate 调用存储过程返回列表


1、使用存储过程

     (1)建立程序包 

Sql代码
  1. CREATE   OR   REPLACE   PACKAGE   TESTPACKAGE     AS  
  2.   
  3.   TYPE   Test_CURSOR   IS   REF   CURSOR;   
  4.   
  5. end   TESTPACKAGE; 
(2)建立存储过程 Sql代码
  1. CREATE   OR   REPLACE   PROCEDURE   TESTC(p_CURSOR   out   TESTPACKAGE.Test_CURSOR)   IS     
  2. BEGIN  
  3.         OPEN   p_CURSOR   FOR   SELECT   *   FROM   testTable;   
  4. END   TESTC;   
2、使用FUNCTION Sql代码
  1. CREATE OR REPLACE FUNCTION  seletall   
  2.     RETURN SYS_REFCURSOR   
  3. AS  
  4.    test_cur SYS_REFCURSOR;   
  5. BEGIN  
  6.     OPEN test_cur for    
  7.     select * from emp;   
  8.   
  9.      return test_cur;   
  10. END;   

3、hibernate配置

Xml代码
  1. <class name="Emp" table="emp">     
  2.         <id name="id" column="id">     
  3.             <generator class="native"/>     
  4.         </id>     
  5.         <property name="name" column="name" type="string" />     
  6.         <property name="age" column="age" type="integer" />     
  7. </class>     
  8.    <sql-query name="getEmp" callable="true">     
  9.      <return alias="emp" class="Emp">     
  10.      <return-property name="id" column="id" />     
  11.      <return-property name="name" column="name" />     
  12.      <return-property name="age" column="age" />     
  13.      </return>     
  14.      {call proc()}     
  15.    </sql-query>    

4、JAVA代码

Java代码

  1. Session ss= HibernateSessionFactory.getSession()     
  2. List li=ss.getNamedQuery("getEmp").list();     
  3. ss.close();    

相关内容