JPA和SYS_REFCURSOR类似于OUT参数

时间:2012-08-17 16:17:49

标签: java plsql eclipselink sys-refcursor glassfish-4

我想使用带有SYS_REFCURSOR OUT参数的JPA来调用一个过程。使用普通JDBC非常容易,但我不确定在JPA中是否可行。

我的程序如下:

CREATE OR REPLACE FUNCTION FN_GET_COINS
  RETURN SYS_REFCURSOR
IS vCursor SYS_REFCURSOR;

BEGIN
  OPEN vCursor FOR
    SELECT
      ...
  RETURN vCursor;
  CLOSE vCursor;

EXCEPTION
  ...
END FN_GET_COINS;

2 个答案:

答案 0 :(得分:5)

JPA 2.0 不支持存储过程,但 JPA 2.1 Java EE 7 的一部分)中添加了支持。使用Oracle SYS_REF_CURSOR的标准JPA 2.1代码示例:

http://wiki.eclipse.org/EclipseLink/Release/2.5/JPA21#Ref_cursor_Example
  http://en.wikibooks.org/wiki/Java_Persistence/Advanced_Topics#JPA_2.1_StoredProcedureQuery


答案 1 :(得分:0)

如果你想使用标准化的JPA 2.0来做这件事,那么你就不走运了(除了通过“原生查询”API进行黑客攻击之外......它在JPA2.1中已经标准化。

自2012年初以来,DataNucleus JPA一直支持JPA 2.1语法(如原始答案所述,所以不知道“当前答案是否过时”应该是什么意思),如这些文档中所示 http://www.datanucleus.org/products/accessplatform_3_3/jpa/stored_procedures.html