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

标签 java hibernate jpa spring-data-jpa spring-data

我有 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/

相关文章:

java - 如何使用 Hibernate 5 中的 Integrator 服务添加带注释的类

java - JPA EntityManager 大内存问题

hibernate - 在 JPA2/Hibernate 中使用覆盖的 equals/hashCode 审计 @Embeddables 的集合

Java 日历/日期转 SQL 时间戳/Oracle 数据库

java - 比较可能为空的字符串的更好方法

eclipse - 如何为 Hibernate - Eclipse Dali JPA 集成指定运行时提供的库

hibernate - 使用 JPA 和 Hibernate 生成 SQLite 动态数据库和数据填充

java - JSF 重定向异常

java - 每次都必须声明 HttpUrlConnection 吗?

java - Spring:不以惰性模式加载,但获取数据