sql >> データベース >  >> RDS >> PostgreSQL

Hibernateエラー:現在のトランザクションは中止され、トランザクションブロックが終了するまでコマンドは無視されます

    おそらく、クエリの一部が実行されなかったことを意味します。トランザクションで多くのクエリがある場合、例:

    • トランザクションを開始する
    • query1
    • query2
    • query3
    • トランザクションの終了

    query2がエラーをスローした場合、query3を実行しようとすると、このエラーが発生します。

    • トランザクションを開始する
    • query1(成功)
    • query2(エラー、問題が発生しました)
    • query3(あなたのような例外がスローされます)
    • トランザクションの終了

    query2からスローされた例外を処理し、処理する必要があります。ユーザーにエラーを表示し、トランザクションをロールバックします。query3を実行しようとしないでください。

    こちらもご覧ください: http://www.faqs.org/docs/ppbook/x15040 .htm

    更新

    取引を完了するには:

    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. 1つのテーブルのすべての行に他のテーブルの対応者が含まれていない場合でも、MySQLの2つのテーブルから選択するにはどうすればよいですか?

    2. 3SQLクエリのパフォーマンスを遅らせる厄介なI/O統計

    3. JDBCエラー:結果セットの開始前

    4. php/mysqlアカウントのアクティブ化