代码之家  ›  专栏  ›  技术社区  ›  pjj

CrudRepository-由于参数类型/数量问题,存储过程调用无法工作

  •  1
  • pjj  · 技术社区  · 5 年前

    我有JPA实体作为

    enter image description here

    然后将存储库作为

    enter image description here

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

    enter image description here

    存储过程是:

    enter image description here

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

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

    1 回复  |  直到 5 年前
        1
  •  2
  •   xerx593    5 年前

    请尝试:

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

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

    StoredProcedureParameter javadoc :

    参数的名称 由数据库中的存储过程定义


    现在你 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