我正在尝试使用JPA EntityManager调用Oracle存储过程。存储过程返回连接多个表的日期范围的订单列表。当我在数据库端测试它时,存储过程很好。以下是我打电话的代码
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("Get_submitted_orders")
.registerStoredProcedureParameter(1, Class.class, ParameterMode.REF_CURSOR)
.registerStoredProcedureParameter(2, String.class, ParameterMode.IN)
.registerStoredProcedureParameter(3, Date.class, ParameterMode.IN)
.registerStoredProcedureParameter(4, Date.class, ParameterMode.IN)
.setParameter(2, storeCode)
.setParameter(3, fromDate, TemporalType.DATE)
.setParameter(4, toDate, TemporalType.DATE);
List<Object[]> orders = query.getResultList();
以下是我得到的错误
Error calling CallableStatement.getMoreResults; nested exception is org.hibernate.exception.GenericJDBCException: Error calling CallableStatement.getMoreResults
答案 0 :(得分:0)
我认为你的代码有两个问题。 首先,REF_CURSOR类应该是void.class
.registerStoredProcedureParameter(1, void.class, ParameterMode.REF_CURSOR)
第二个,在调用getResultList()yoy之前应该执行你的查询
query.execute();
List<Object[]> orders = query.getResultList();
希望这有帮助!