2

In & OUT パラメータを使用して hibernate 4 セッション オブジェクトを使用してストアド プロシージャを呼び出す方法について多くのことを調査しましたが、役に立ちませんでした。

最後に、「SessionImpl」に関連する手がかりを得ました。このオブジェクトを使用して、Connection オブジェクトを取得できます。

この接続オブジェクトを使用すると、プロシージャの IN/OUT パラメータをサポートする prepareCall() メソッドを呼び出すことができます。

以下は、サンプル スニペットです。

        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));
        }
4

0 に答える 0