prosource

HikariCP pass Oracle 사용자 지정 유형

probook 2023. 10. 5. 23:23
반응형

HikariCP pass Oracle 사용자 지정 유형

Oracle 기본 데이터 소스에서 HikariCP로 전환했습니다.저장된 매개 변수에 맞춤형 Oracle 유형을 전달하고 캐스트하는 코드 조각이 있습니다.java.sql.Connection로.oracle.jdbc.OracleConnection.

try(OracleConnection connection = (OracleConnection) dbConnect.getConnection()) {
        try(CallableStatement callableStatement = connection.prepareCall("{? = call pkg_applications.add_application(?,?,?)}")) {
            callableStatement.registerOutParameter(1, Types.VARCHAR);
            callableStatement.setString(2, form.getPolicyNumber());
            callableStatement.setString(3, form.getPolicyStart());

            Object[][] uploads = new Object[wrappers.size()][];

            for(int i=0; i<wrappers.size(); i++) {
                uploads[i] = new Object[4];
                uploads[i][0] = wrappers.get(i).getName();
                uploads[i][1] = wrappers.get(i).getFile().getContentType();
                uploads[i][2] = wrappers.get(i).getFile().getSize();
                uploads[i][3] = wrappers.get(i).getLocation();
            }

            callableStatement.setArray(4, connection.createARRAY("T_UPLOAD_FILE_TABLE", uploads));

            callableStatement.execute();
            int applicationId = callableStatement.getInt(1);

            operationResponse.setData(applicationId);
            operationResponse.setCode(ResultCode.OK);
        }
    }
    catch(Exception e) {
        log.error(e.getMessage(), e);
    }

나는 이해합니다.java.lang.ClassCastException - com.zaxxer.hikari.pool.HikariProxyConnection cannot be cast to oracle.jdbc.OracleConnection.

HikariCP를 사용하여 Oracle 사용자 지정 유형을 저장 프로시저에 전달하려면 어떻게 해야 합니까?

풀에서 얻는 것은 프록시 연결입니다.기본 오라클 연결에 액세스하려면 isWrapperFor()와 함께 unwrap()을 사용해야 합니다.

try (Connection hikariCon = dbConnect.getConnection()) {
   if (hikariCon.isWrapperFor(OracleConnection.class)) {
      OracleConnection connection = hikariCon.unwrap(OracleConnection.class);
      :
      :
   }

그러나 예제에서 Oracle Connection이 특정한 메서드는 무엇입니까? 캐스트할 필요가 전혀 없을 수도 있습니다!

언급URL : https://stackoverflow.com/questions/40087536/hikaricp-pass-oracle-custom-type

반응형