休眠调用Oracle存储过程

时间:2019-04-16 00:35:28

标签: java spring hibernate jpa entitymanager

我正在处理需要调用Oracle存储过程以便更新某些记录的服务。该过程没有返回值。

我正在使用Spring Boot v2.1.3和Hibernate 5.3.6。

我试图像这样调用程序:

Object updatePaymentStatus(Integer cropYear, Integer weightTagNumber) throws Exception {
    return em.createNativeQuery("CALL GMSAPPL.GMS_INTERFACE_JDE_PKG.UPDATEPAYMENTSTATUSBYWTNUMBER(:weightTagNumber, :cropYear)")
            .setParameter("weightTagNumber", weightTagNumber)
            .setParameter("cropYear", cropYear)
            .getResultList();

但是,当我执行此操作时,我收到了SQLSyntaxErrorException: ORA-00900: invalid SQL statement

谁能解释为什么Hibernate认为这是无效的SQL语句?这正是我从Oracle调用它并即时执行本机查询的方式。

我也尝试过这种方式:

try(Connection conn = DriverManager.getConnection(url, "username", "password")) {
    System.out.println("Connected to database");

    CallableStatement cstmt = conn.prepareCall("{CALL GMSAPPL.GMS_INTERFACE_JDE_PKG.UPDATEPAYMENTSTATUSBYWTNUMBER(?, ?)}");
    cstmt.setInt(1, weightTagNumber);
    cstmt.setInt(2, cropYear);

    return cstmt.execute();
}

我收到:SQLException: ORA-01403: no data found\nORA-06512: at \"GMSAPPL.GMS_INTERFACE_JDE_PKG\", line 359\nORA-06512: at line 1\n

0 个答案:

没有答案