Java 如何使用JPA 2.0调用程序或函数使SYS_REFCURSOR

Java 如何使用JPA 2.0调用程序或函数使SYS_REFCURSOR,java,oracle,hibernate,jpa,osgi,Java,Oracle,Hibernate,Jpa,Osgi,请帮我检查一下:我用了很多方法,但这是不可能的 我的程序: 创建或替换过程BCA\u MOTO.getDVCSGT( Diadanhhanchhinhid位于Don_Vi_canhsat_GT.id%类型中, p_记录设置系统(参考光标) 作为 开始 为打开p_记录集 挑选 dv.id, dv.TEN_DAYDU, dv.MA_DON_VI, dv.MA_TRUC_THUOC, dv.dv_CSGT_CAPTREN, dv.dv_TRUC_THUOC, dv.CAP_DON_VI, dvct.T

请帮我检查一下:我用了很多方法,但这是不可能的

我的程序:

创建或替换过程BCA\u MOTO.getDVCSGT(
Diadanhhanchhinhid位于Don_Vi_canhsat_GT.id%类型中,
p_记录设置系统(参考光标)
作为
开始
为打开p_记录集
挑选
dv.id,
dv.TEN_DAYDU,
dv.MA_DON_VI,
dv.MA_TRUC_THUOC,
dv.dv_CSGT_CAPTREN,
dv.dv_TRUC_THUOC,
dv.CAP_DON_VI,
dvct.TEN_DAYDU,
dvct.MA_DON_VI,
dvct.MA_TRUC_THUOC,
dvct.DV_CSGT_CAPTREN,
dvct.DV_TRUC_THUOC,
DIA_CHI博士,
林武奇博士,
ddhc.MA,
ddhc.10
来自DON_VI_CANHSAT_GT dv
在dv.DIA\u DANH\u HANH\u CHINH\u ID=ddhc.ID上左连接DIA\u DANH\u HANH\u CHINH ddhc
左连接DON_VI_CANHSAT_GT dvct ON dv.dv_CSGT_CAPTREN_ID=dvct.ID
其中dv.DIA_DANH_HANH_CHINH_ID=diadanhhanhchinhID;
结束GETDVCGT;
/
我的职能:

创建或替换函数BCA\u MOTO.my\u函数(varchar2中的diadanhhanchinhid)
返回系统参考光标
作为
我的光标系统参考光标;
开始
打开my_光标,选择dv.ID作为ID,
dv.dv\U CSGT\U CAPTREN\U ID作为dv\U CSGT\U CAPTREN\U ID,
dv.DIA_DANH_HANH_chinhu ID作为DIA_DANH_HANH_chinhu ID,
dv.MA_DON_VI作为MA_DON_VI,
dv.TEN_DON_VI作为TEN_DON_VI,
dv.DIA_CHI作为DIA_CHI,
dv.TEN_COQUAN_CHUQUAN作为TEN_COQUAN_CHUQUAN,
dv.TEN_COQUAN_圈作为TEN_COQUAN_圈,
dv.TEN_DAYDU作为TEN_DAYDU,
dv.TRANG_THAI作为TRANG_THAI,
dv.CAP_DON_VI作为CAP_DON_VI,
dv.SAP_XEP作为SAP_XEP,
dv.LINH_VUC作为LINH_VUC,
dv.MA_THAMCHIEU作为MA_THAMCHIEU,
dv.TEN_VIETTAT作为TEN_VIETTAT,
dv.CO_QUAN作为CO_QUAN,
dv.MA_-tru-THUOC作为MA_-tru-THUOC,
dv.dv\U CSGT\U CAPTREN作为dv\U CSGT\U CAPTREN,
dv.dv_TRUC_THUOC作为dv_TRUC_THUOC,
dv.KHO_BAC_ID作为KHO_BAC_ID,
dv.MA_KHO_BAC作为MA_KHO_BAC,
dv.NGAN_HANG_ID作为NGAN_HANG_ID,
dv.MA_NGAN_HANG作为MA_NGAN_HANG,
DIA_die_TAM_GIU ID作为DIA_die TAM_GIU ID,
dv.DON_VI_资源ID作为,
十等于十,
ddhc.MA作为MA
来自DON_VI_CANHSAT_GT dv
左连接DIA_DANH_HANH_CHINH ddhc
关于dv.DIA_DANH_HANH_CHINH_ID=ddhc.ID
其中dv.DIA_DANH_HANH_CHINH_ID=diadanhhanhchinhID;
返回我的光标;
结束;
/
我的代码:

@实体
@javax.persistence.NamedNativeRequesty(
name=“getProc”,
query=“{调用我的函数(?:diadanhhanchinhid)}”,
resultClass=ViewDvcsgt.class,
提示={
@javax.persistence.QueryHint(
name=“org.hibernate.callable”,
value=“true”
)
})
List entities=this.jpa.txExpr(TransactionType.Supports,em->{
TypedQuery query=em.createNamedQuery(
“我的_函数”,
com.etc.osgi.lab.bean.ViewDvcsgt.class);
query.setParameter(1,maDdhc);
List listDvCsgt=query.getResultList();
int k=0;
返回列表DVCSGT;
});
我以前喜欢这个,但我发现JPA是2.0

List entities=this.jpa.txExpr(TransactionType.Supports,em->{
StoredProcedureRequesty store=em.createStoredProcedureRequesty(“getDVCSGT”);
store.registerStoredProcedureParameter(“diadanhhanchinhid”,String.class,ParameterMode.IN);
store.registerStoredProcedureParameter(“p_记录集”,Class.Class,ParameterMode.REF_游标);
setParameter(“diadanhhanchinhid”,maDdhc);
int a=0;
store.execute();
List listDvCsgt=store.getResultList();
返回列表DVCSGT;
});