sql >> Databáze >  >> RDS >> PostgreSQL

Chyba hibernace:aktuální transakce je přerušena, příkazy jsou ignorovány až do konce bloku transakce

Pravděpodobně to znamená, že některé z vašich dotazů nebyly provedeny. Pokud máte v transakci mnoho dotazů, např.

  • zahájit transakci
  • dotaz1
  • dotaz2
  • dotaz3
  • dokončete transakci

a dotaz2 vyvolá chybu, a když se pokusíte provést dotaz3, zobrazí se tato chyba.

  • zahájit transakci
  • dotaz1 (úspěšný)
  • dotaz2 (chyba, něco se pokazilo)
  • query3 (vyhozena výjimka, jako je ta vaše)
  • dokončete transakci

Měli byste zpracovat výjimku vyvolanou dotazem2 a zpracovat ji. Ukažte uživateli nějakou chybu, návratovou transakci, nikdy se nepokoušejte provést dotaz3.

Podívejte se také sem:http://www.faqs.org/docs/ppbook/x15040 .htm

AKTUALIZACE

Dokončení transakce:

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");
}



  1. mysql počítejte, kolikrát jedno pole odkazuje na druhé

  2. Hierarchické dotazy v SQL Server 2005

  3. 15 užitečných tipů pro ladění a optimalizaci výkonu MySQL/MariaDB

  4. Zápis hebrejštiny do mySql pomocí JAVA