使用JPA调用存储过程时出错

时间:2018-04-24 02:52:38

标签: java jpa spring-data-jpa

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

我认为你的代码有两个问题。 首先,REF_CURSOR类应该是void.class

.registerStoredProcedureParameter(1, void.class, ParameterMode.REF_CURSOR)

第二个,在调用getResultList()yoy之前应该执行你的查询

query.execute();
List<Object[]> orders = query.getResultList();

希望这有帮助!