休眠4 - 调用具有IN和OUT参数的存储过程

时间:2016-07-28 09:52:46

标签: java hibernate-4.x java-stored-procedures

我研究了很多关于如何使用hibernate 4会话对象调用存储过程和In& OUT params,但没有用。

最后得到了与“SessionImpl”相关的线索。使用此对象,我们可以获取Connection对象。

使用此连接对象可以调用prepareCall()方法,该方法将支持该过程的IN / OUT参数。

以下是一个示例代码段。

        Map<String, String> returnMap = new HashMap<String, String>(); 
        Session session = sessionFactory.getCurrentSession();
        Connection connObj = ((SessionImpl)session).connection();
        CallableStatement connStmt = connObj.prepareCall("{ call SCHEMA.PKG_NAME.SP_NAME(?,?,?) }");
        connStmt.setLong(1, 123456);

        connStmt.registerOutParameter(2, java.sql.Types.VARCHAR);
        connStmt.registerOutParameter(3, java.sql.Types.VARCHAR);
        connStmt.execute();

        if(connStmt != null && connStmt.getString(2).equalsIgnoreCase("Y")) {
            returnMap.put("returnID", ExceptionConstants.SUCCESS_STATUS);
            returnMap.put("returnMessage", connStmt.getString(3));  
        } else {
            returnMap.put("returnID", ExceptionConstants.FAILED_STATUS);
            returnMap.put("returnMessage", connStmt.getString(3));
        }

0 个答案:

没有答案