How to Hibernate SQLQuery Native

Primero en hibernate se pueden ejecutar consultas con entidades, HQL y SQL nativo para querys mas rebuscadas (join , llamados a funciones, count ,etc). El ejemplo a continuación es un ejemplo de SQL nativo para un insert.


/**
     * Guarda nuevo registro en BD
     *
     * @param estado TO con datos del nuevoo estado a ingresar
     * @return
     * @throws TechnicalFault
     */
    public boolean persistTblEstado(Estado estado) throws TechnicalFault {
        boolean estadoInsert = false;
        Session sessionhb = null;
        Transaction tx = null;
        try {
            sessionhb = factory.openSession();
            tx = sessionhb.beginTransaction();
            Estado u = (Estado) consultaEstadoMovil(estado.getImei());
            if (u == null) {
                
                //Insert into TBL_ESTADOS ( CODIGO_COMPANIA , FECHA_SOLICITUD , FECHA_OPERADORA , FECHA_INGRESO , FECHA_DENUNCIA , TIPO_TECNOLOGIA , TIPO_COMUNICACION , TIPO_EQUIPO , TIPO_PLAN , ACCION , MOTIVO , CODIGO_OPERACION , CODIGO_SISTEMA , MARCA , MODELO , IMEI , MSISDN , IMSI , ICCID , USUARIO , CODIGO_IDD ) values (?,to_timestamp(?,''YYYYMMDDHH24MISS''),to_timestamp(?,''YYYYMMDDHH24MISS''),to_timestamp(?,''YYYYMMDDHH24MISSFF''),to_timestamp(?,''YYYYMMDDHH24MISS''),GETTECNOLOGIA(?,?),?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
                Query q = sessionhb.createSQLQuery(JDBC_INSERT_ESTADO);
                q.setInteger(0, estado.getCompania());
                q.setString(1, estado.getFechaSolicitud());
                q.setString(2, estado.getFechaOperadora());
                q.setString(3, estado.getFechaIngreso());
                q.setString(4, estado.getFechaDenuncia()); 
                q.setString(5, estado.getImei());
                q.setString(6, estado.getTecnologia());
                q.setString(7, estado.getComunicacion());
                q.setString(7, estado.getEquipo());
                q.setString(9, estado.getPlan());
                q.setString(10, estado.getAccion());
                q.setInteger(11, estado.getMotivo());
                q.setString(12, getCodigoOperacion(estado.getCodigoOperacion()));
                q.setInteger(13, estado.getSistema());
                q.setString(14, estado.getMarca());
                q.setString(15, estado.getModelo());
                q.setString(16, estado.getImei());
                q.setString(17, estado.getMsisdn());
                q.setLong(18, estado.getImsi());
                q.setLong(19, estado.getIccid());
                q.setString(20, estado.getUsuario());
                q.setInteger(21, estado.getCodigoIdd());
                q.executeUpdate();
                sessionhb.flush();//***********************
                tx.commit();
            } else {
                mergeTblEstado(estado);
            }
            estadoInsert = true;
        } catch (Exception e) {
            try {
                tx.rollback();
            } catch (RuntimeException rbe) {
                LanzaExcepcion.throwsTechnicalFault(JPA_ERROR_IN);
            }
            LanzaExcepcion.throwsTechnicalFault(JPA_ERROR_IN);
        } finally {
            if (sessionhb != null) {
                sessionhb.close();
            }
        }
        return estadoInsert;
    }

No hay comentarios.:

Problemas de activación WIFI6 en LG_OLED55CXPSA

  Mi experiencia con este TV  ah sido impecable hasta ahora, llevaba un uso normal y no tenia que usar la conexión por wifi ya que tengo una...