How to call Oracle Function or Procedure using Hibernate (EntityManager) or JPA

前端 未结 6 939
小蘑菇
小蘑菇 2020-11-28 09:36

I have an Oracle function which return sys-refcursor and when I call this function using Hibernate, I am getting the following exception.

Hibernate: { ? = ca         


        
6条回答
  •  伪装坚强ぢ
    2020-11-28 10:03

    For Procedure:

    CREATE OR REPLACE PROCEDURE my_procedure(p_val IN VARCHAR2, 
      my_cursor OUT SYS_REFCURSOR) 
    AS
    BEGIN
      OPEN my_cursor FOR SELECT emp_name FROM employees 
          WHERE lower(emp_name) like lower(p_val||'%');
    END;
    

    Alternative Solution: Call procedure with sys_refcursor as OUT parameter without defining @NamedNativeQuery

    StoredProcedureQuery query = entityManager.createStoredProcedureQuery("myProcedure");
        query.registerStoredProcedureParameter(1, void.class, ParameterMode.REF_CURSOR);
        query.registerStoredProcedureParameter(2, String.class, ParameterMode.IN);
        query.setParameter(2, "Umesh");
        List result = query.getResultList();
    

提交回复
热议问题