Excepciones de JDBC Mediator
Las excepciones de JDBC Mediator exponen errores notificados por la base de datos o indican el uso de metadatos no válidos en el intento de crear una instancia de DMS.

La excepción Mediator es la raíz de todos los Data Mediator Service y la excepción JDBCMediator es la raíz del DMS de JDBC en particular.
- Si la conexión en uso tiene la propiedad AutoCommit establecida en true, pero el DMS de JDBC controla la transacción y necesita que esté establecida en false
- Si se está intentando utilizar una base de datos no soportada
- Si se producen otros errores de base de datos de programa de fondo durante una operación commit (comprometer) o rollback (retrotraer).
Se produce una excepción OCC (Control de concurrencia optimista) cuando la operación applyChanges() produce una colisión de datos. Cuando se produce esto, la excepción contiene los valores de fila originales, los valores de fila actuales y los valores de fila intentados. Estos valores se utilizan para ayudar a recuperarse de un error.
Se produce una excepción InvalidMetadata de metadatos no válidos proporcionados al DMS de JDBC durante la creación. Esto puede suceder si una consulta requiere tablas o columnas que no están definidas en los metadatos o si hay nombres de columna idénticos para tablas distintas de las versiones de Oracle, Informix y anteriores soportadas de bases de datos Sybase.
Ejemplo: Forzar colisiones de datos OCC y excepciones de JDBC Mediator: El ejemplo siguiente fuerza una colisión para demostrar la detección y muestra la excepción que se produce como resultado.
// En este ejemplo se supone que ya se ha cread un mediador
// y que el primer nombre de la lista es Sam.
// También se supone que la tabla Customer tiene una columna OCC
// y los metadatos han establecido esta columna como la
// de colisiones.
DataObject graph1 = mediator.getGraph();
DataObject graph2 = mediator.getGraph();
DataObject customer1 = (DataObject)graph1.getList("CUSTOMER").get(0);
customer1.set("CUSTFIRSTNAME", "Bubba");
DataObject customer2 = (DataObject)graph2.getList("CUSTOMER").get(0);
customer2.set("BOWLERFIRSTNAME", "Slim");
mediator.applyChanges(graph2);
try
{
mediator.applyChanges(graph1);
}
catch (OCCException e)
{
// Dado que se ha obtenido graph1 antes de graph2 y que
// graph2 ya se ha sometido, si se intenta
// aplicar los mismos cambios a graph1 se producirá
// esta excepción de OCC.
assertEquals("Sam", e.getOriginalDO(). getString("CUSTFIRSTNAME"));
assertEquals("Bubba", e.getChangedDO(). getString("CUSTFIRSTNAME"));
assertEquals("Slim", e.getDatabaseDO(). getString("CUSTFIRSTNAME"));
}