当前正在使用输出参数记录表来执行存储过程。在spring-jpa上访问它时遇到了麻烦。
已经尝试过ParameterMode.REF_CURSOR和ParameterMode.OUT,对于应该为显示结果列表显示的参数模式感到困惑。
我在下面收到此错误
javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Error calling CallableStatement.getMoreResults
Caused by: org.hibernate.exception.GenericJDBCException: Error calling CallableStatement.getMoreResults
Caused by: java.sql.SQLException: operation not allowed: Ordinal binding and Named binding cannot be combined!
Oracle存储过程
procedure fetch_fund_values(
policy_num in varchar2,
fund_detail out table_fund_policy
);
TYPE record_fund_policy IS RECORD(
policy_num VARCHAR2
,fund_id VARCHAR2
,fund_price NUMBER
);
TYPE table_fund_policy IS TABLE OF record_fund_policy;
spring jpa访问存储过程
try {
StoredProcedureQuery storedProcedure = this.entityManager
.createStoredProcedureQuery("fetch_fund_values")
.registerStoredProcedureParameter("policy_num", String.class,
ParameterMode.IN)
.registerStoredProcedureParameter("table_fund_policy",
void.class, ParameterMode.REF_CURSOR)
.setParameter("policy_num", policyNumber);
return storedProcedure.getResultList();
} catch (Exception ex) {
ex.printStackTrace();
throw ex;
}
我目前正在寻找可以访问结果列表的方式。我应该创建退货POJO吗?
检查后,类型应该在数据库级别,而不在软件包级别。以便被JDBC发现。
由于启用了更强大的访问StoredProcedures,我打开了JDBC。