У меня новичок в 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();
}
});
Как я могу отобразитьобъект с там классами.