我有 JPA 实体
然后存储库为
现在,当我运行它时,我收到以下异常:
存储过程是:
它正在针对 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/