Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以使用@Procedure在SpringJPA中调用Oracle函数吗?_Java_Spring_Spring Data Jpa - Fatal编程技术网

Java 我可以使用@Procedure在SpringJPA中调用Oracle函数吗?

Java 我可以使用@Procedure在SpringJPA中调用Oracle函数吗?,java,spring,spring-data-jpa,Java,Spring,Spring Data Jpa,我有这个神谕功能 FUNCTION fn_get_vp_id_by_hexstring (mp_hexstring VARCHAR2, mp_fp_id NUMBER, mp_erf_user VARCHAR2 DEFAULT USER) RETURN NUMB

我有这个神谕功能

FUNCTION fn_get_vp_id_by_hexstring (mp_hexstring    VARCHAR2,
                                   mp_fp_id        NUMBER,
                                   mp_erf_user     VARCHAR2 DEFAULT USER)
                                   RETURN NUMBER;
我想使用的
@过程
注释调用它

因此,我创建了以下存储库代码:

@Procedure(procedureName = "FN_GET_VP_ID_BY_HEXSTRING")
Integer getVpIdByHexString(
    @Param("mp_hexstring") String hexstring,
    @Param("mp_fp_id") Integer fp_id,
    @Param("mp_erf_user") String user);
这是行不通的,因为spring假设通过hextstring获取VP ID是一个过程,这意味着它期望返回值是一个输出参数,而不是PL/SQL函数的返回值。很明显,我收到了这个错误消息(注意
OUT=>:3
):


有没有一种方法可以使用
@Procedure
或其他注释来调用Oracle函数?

我刚才也在寻找同样的方法。在搜索文档和查看spring源代码之后,我觉得当时这是不可能的。我目前使用
org.springframework.jdbc.object.SotredProcedure
进行函数调用。如果你找到了一个方法,请分享它作为一个答案。谢谢。我刚才也找过同样的东西。在搜索文档和查看spring源代码之后,我觉得当时这是不可能的。我目前使用
org.springframework.jdbc.object.SotredProcedure
进行函数调用。如果你找到了一个方法,请分享它作为一个答案。谢谢。
Caused by: Error : 6550, Position : 6, Sql = BEGIN FN_GET_VP_ID_BY_HEXSTRING(MP_HEXSTRING=>:0,MP_FP_ID=>:1,MP_ERF_USER=>:2,OUT=>:3); END;, OriginalSql = {call FN_GET_VP_ID_BY_HEXSTRING(?,?,?,?)}, Error Msg = ORA-06550: Zeile 1, Spalte 7:
PLS-00306: wrong number or types of arguments in call to 'FN_GET_VP_ID_BY_HEXSTRING'