【问题标题】:Error while calling stored procedure using JPA使用 JPA 调用存储过程时出错
【发布时间】:2018-10-04 04:30:33
【问题描述】:

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

【问题讨论】:

  • 你能添加更多的堆栈跟踪吗?
  • 如果您为您的程序“Get_submitted_orders”添加 DDL,那将是完美的

标签: java jpa spring-data-jpa


【解决方案1】:

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

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

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

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

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2015-05-20
    • 2015-12-23
    • 2013-12-18
    • 2021-03-15
    • 2012-05-10
    • 2014-08-16
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多