Problema con Rollback y Hibernate Hql
Publicado por Ajesus (1 intervención) el 17/10/2011 10:50:39
Hola para tod@s !
Estoy utilizando Hql para realizar un borrado masivo sobre una tabla, el problema es que
intento implementar control de transaciones.
Lanzo la sencia y funciona perfectamente me borra en este caso toda la tabla de cliente.
El problema es cuando despues de ejecutar la sentencia intento realizar un rollback, no consigo
que la sentencia no sea aplicada sobre la base de datos, pero no me hace ni caso, es decir, le da
igual que realice un commit o rollback, pues borra toda la tabla. Uhhhh ???
Por lo que he leido por ahi, me da la sensacion que al utilizar hql, lanza directamente la
operacion sobre la base de datos y no tenemos la opcion de realizar rollback pues ya estan los registros
borrados de la base de datos.
Si esta deducion es correcta como puedo solucionarlo, necesito realizar operaciones masivas sobre la
base de datos, no solamente añadir, borrar o modificar un solo registro y al mismo tiempo tener un control
transacional.
Adjunto mi codigo, para que podais enter lo que estoy intentado explicar.
Un saludo y hasta luego
session.getTransaction().begin();
_logger.info("Borrar Por Hql");
String hql = "delete from Cliente";
Query query = session.createQuery(hql);
// query.setString("name","Product 1");
int rowCount = query.executeUpdate();
System.out.println("Filas Afectadas: " + rowCount);
// session.getTransaction().commit();
session.getTransaction().rollback();
session.close();
Estoy utilizando Hql para realizar un borrado masivo sobre una tabla, el problema es que
intento implementar control de transaciones.
Lanzo la sencia y funciona perfectamente me borra en este caso toda la tabla de cliente.
El problema es cuando despues de ejecutar la sentencia intento realizar un rollback, no consigo
que la sentencia no sea aplicada sobre la base de datos, pero no me hace ni caso, es decir, le da
igual que realice un commit o rollback, pues borra toda la tabla. Uhhhh ???
Por lo que he leido por ahi, me da la sensacion que al utilizar hql, lanza directamente la
operacion sobre la base de datos y no tenemos la opcion de realizar rollback pues ya estan los registros
borrados de la base de datos.
Si esta deducion es correcta como puedo solucionarlo, necesito realizar operaciones masivas sobre la
base de datos, no solamente añadir, borrar o modificar un solo registro y al mismo tiempo tener un control
transacional.
Adjunto mi codigo, para que podais enter lo que estoy intentado explicar.
Un saludo y hasta luego
session.getTransaction().begin();
_logger.info("Borrar Por Hql");
String hql = "delete from Cliente";
Query query = session.createQuery(hql);
// query.setString("name","Product 1");
int rowCount = query.executeUpdate();
System.out.println("Filas Afectadas: " + rowCount);
// session.getTransaction().commit();
session.getTransaction().rollback();
session.close();
Valora esta pregunta


0