您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

带有PostgreSQL和REF_CURSOR的JPA 2.1 StoredProcedureQuery

带有PostgreSQL和REF_CURSOR的JPA 2.1 StoredProcedureQuery

简短答案:将您的两个呼叫顺序颠倒为registerStoredProcedureParameter()

storedProcedure.registerStoredProcedureParameter(1, Object.class, ParameterMode.REF_CURSOR);
storedProcedure.registerStoredProcedureParameter(2, String.class, ParameterMode.IN);

长答案:我对Hibernate源代码进行了一些挖掘,以获取Postgress可调用语句支持,并发现每个registerStoredProcedureParameter()调用都创建了一个ParameterRegistrationImplementor实例,该实例被添加到列表中并传递。您会注意到,此类存储了参数的位置,该位置与其在列表中的位置无关。

稍后,将分析此列表,并假定REF_CURSOR参数将排在第一位,并且如果REF_CURSOR参数不是第一个参数(无论参数号是) 将抛出错误消息。

这不是一个非常聪明的处事方式(IMHO),但至少解决方法很简单:如果交换呼叫顺序,就可以了。

SQLServer 2022/1/1 18:16:31 有533人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶