sql >> Base de Datos >  >> RDS >> PostgreSQL

Error de hibernación:la transacción actual se cancela, los comandos se ignoran hasta el final del bloque de transacciones

Probablemente significa que algunas de sus consultas no se ejecutaron. Si tiene muchas consultas en la transacción, por ejemplo,

  • comenzar transacción
  • consulta1
  • consulta2
  • consulta3
  • terminar transacción

y query2 arroja un error, luego, cuando intenta ejecutar query3, obtiene este error.

  • comenzar transacción
  • consulta1 (con éxito)
  • consulta2 (error, algo salió mal)
  • query3 (se lanza una excepción como la suya)
  • terminar transacción

Debe manejar la excepción lanzada desde query2 y manejarla. Muestre algún error al usuario, revierta la transacción, nunca intente ejecutar la consulta 3.

Mire también aquí:http://www.faqs.org/docs/ppbook/x15040 .htm

ACTUALIZAR

Para finalizar la transacción:

List object = null; 
try {
  org.hibernate.Transaction tx = session.beginTransaction(); 
  try { 
    Query q = session.createQuery("from Table where lower(translatedText) like lower('%" + term + "%') or lower(translatedAscii) like lower('%" + term + "%') or lower(originalAscii) like lower('%" + term + "%')"); 
    object = (List<Table>) q.list(); 
  } catch (Exception e) {
    e.printStackTrace(); 
  } finally {
    //You can safely rollback here because you are not changing anything in the DB.
    //If you change something, you should commit transaction at the end of try block,
    //and here check if it is still active and rollback if it is.
    tx.rollback();
  }
  return object; 
} catch (HibernateException e) {
  throw new RuntimeException("Could not begin transaction");
}