1

我想使用带有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;
4

2 回答 2

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


于 2013-07-17T01:48:42.100 回答
0

如果你想用标准化的 JPA 2.0 来做,那么你就不走运了(除了通过“本机查询”API 来破解它......它在 JPA2.1 中是标准化的。

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

于 2012-08-17T16:58:42.250 回答