Мне нужно вызвать процедуру, используя Hibernate и процедура содержит определенные пользователем объекты - PullRequest
0 голосов
/ 31 января 2019

У меня новичок в Hibernate, раньше я использовал только Sql и Resultset и оператор для вызываемых процедур.

Теперь моя задача - вызвать процедуру, и процедура содержит несколько типов ввода и вывода, USER DEFINED DBObjects.

У меня есть вызов процедуры с типом ввода как String или int и типом вывода как String или int.Я сейчас совершенно сбит с толку.

Как я могу получить вывод?

Процедура ниже:

 PROCEDURE Proc_Consultatrabajadores(Ip_Arrayparametros         IN     Sim_Typ_Array_Lista
                               ,Ip_Trabajadoresdetalles    IN     ARL_TYP_ARRAY_TRABBASICDETL_CT
                               ,Ip_Centrotrabcodigo        IN     ARL_TYP_ARRAY_CNTROTRABCOD_CT
                               ,Op_Arraydatostrabajadores     OUT ARL_TYP_ARRAY_CONSTRBJADORS_CT
                               ,Op_Numeropoliza               OUT NUMBER
                               ,Op_FechaPoliza                OUT   VARCHAR2
                               ,Ip_Validacion              IN     VARCHAR2
                               ,Ip_Proceso                 IN     Sim_Typ_Proceso
                               ,Op_Resultado                  OUT NUMBER
                               ,Op_Arrerrores                 OUT Sim_Typ_Array_Error );

Теперь код Java: -

ConsultaTrabajadoresRespType consultaTrabajadoresRespType = new ConsultaTrabajadoresRespType();
        DatosBasicosTrabajadores datosBasicosTrabajadores = new DatosBasicosTrabajadores();
        List<DatosBasicoTrabajador> basicosTrabajadorsList = new ArrayList<DatosBasicoTrabajador>();
        DatosBasicoTrabajador datosBasicoTrabajador = new DatosBasicoTrabajador();
        datosBasicoTrabajador.setTipoDocumento(consultaTrabajadoresReqType
                .getData().getTrabajadorTipoDocumento());
        datosBasicoTrabajador
                .setNumeroDocumento(consultaTrabajadoresReqType.getData()
                        .getTrabajadorNumeroDocumento());
        basicosTrabajadorsList.add(datosBasicoTrabajador);
        datosBasicosTrabajadores
                .setDatosBasicosTrabajador(basicosTrabajadorsList);

        List<DominioVO> listaParametrosIn = consultasTrabajadoresDominioVOObject(consultaTrabajadoresReqType);
        List<ObjetoOracleDto> lstObjOracleEntrada = new ArrayList<ObjetoOracleDto>(
                4);
        List<ObjetoOracleDto> lstObjOracleSalida = new ArrayList<ObjetoOracleDto>(
                4);

Session session = com.segurosbolivar.arl.hibernate.util.HibernateUtil
                .currentSession();

session.doWork(new Work() {
            @Override
            public void execute(Connection connection) throws SQLException {
                if (connection.isWrapperFor(OracleConnection.class)) {
                    connection = connection.unwrap(OracleConnection.class);
                }

                StructDescriptor recDescriptor = StructDescriptor
                        .createDescriptor(
                                ConstantesOracle.SIM_TYPE_SINIESTRO_CESVI,
                                connection);

                STRUCT oracleRec = new STRUCT(recDescriptor, connection,
                        valors);

                CallableStatement callableStatement = connection
                        .prepareCall("{ CALL"
                                .concat(ConstantesOracle.ARL_PCK_CONSULTA_TRAB)
                                .concat(ConstantesOracle.PROC_CONSULTATRABAJADORES_REST)
                                .concat("(?,?,?,?,?,?,?,?,?,?) }"));

                callableStatement.setObject(1, oracleRec);

                callableStatement.setObject(2, oracleRec);

                callableStatement.setObject(3, oracleRec);

                callableStatement
                        .registerOutParameter(4, OracleTypes.CURSOR);

                callableStatement.registerOutParameter(5,
                        OracleTypes.NUMBER);

                callableStatement.registerOutParameter(6,
                        OracleTypes.VARCHAR);

                callableStatement.registerOutParameter(7,
                        OracleTypes.VARCHAR);

                callableStatement.registerOutParameter(8,
                        OracleTypes.STRUCT);

                callableStatement.registerOutParameter(9,
                        OracleTypes.NUMBER);

                callableStatement.registerOutParameter(10,
                        OracleTypes.CURSOR);



                callableStatement.execute();

                callableStatement.close();
                connection.close();
            }
        });

Как я могу отобразитьобъект с там классами.

...