gpt4 book ai didi

java - CrudRepository - 由于参数类型/数量问题,存储过程调用不起作用

转载 作者:行者123 更新时间:2023-11-30 01:55:51 25 4
gpt4 key购买 nike

我有 JPA 实体

enter image description here

然后存储库为

enter image description here

现在,当我运行它时,我收到以下异常:

enter image description here

存储过程是:

enter image description here

它正在针对 Oracle 数据库运行。有人可以帮助我理解即使我有正确的参数编号和类型,但我仍然收到此异常的原因。

请注意:我没有本地环境,因此无法放置示例代码,请不要担心类/方法名称,我试图伪装它们,因此它们可能不一致。

还有一个问题,假设我有 2 个 OUT 参数,那么我如何创建我的实体类,通过一个输出参数我知道我可以返回 String (或适当的返回类型),但以防万一2个OUT参数我不知道怎么办?我已阅读this文章,但它只有 1 个 OUT 参数,我找不到任何解释 2 OUT 参数的文章或帖子。如果有人有带有 2 个 OUT 参数的代码,那么这会很有帮助。

最佳答案

请尝试:

  • 使用过程参数的精确(db)名称:

    @StoredProcedureParameter(name = "tbl_name" ...
    @StoredProcedureParameter(name = "p_date" ...
    @StoredProcedureParameter(name = "p_message" ...
  • 或(或者)完全省略名称(取决于位置)。

来自StoredProcedureParameter javadoc :

The name of the parameter as defined by the stored procedure in the database. If a name is not specified, it is assumed that the stored procedure uses positional parameters.

<小时/>

目前您can't have multiple OUT-parameters using spring-data ,但是(应该)使用标准 JPA 没有问题:

StoredProcedureQuery spq = em.createNamedStoredProcedureQuery("my_proc");
proc.setParameter("p_in", 1);
proc.execute();
Integer res1 = (Integer) proc.getOutputParameterValue("out1");
Integer res2 = (Integer) proc.getOutputParameterValue("out2");

另请参阅:Spring Data JPA NamedStoredProcedureQuery Multiple Out Parameters

关于java - CrudRepository - 由于参数类型/数量问题,存储过程调用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54541591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com