ロールバックは、トランザクションに取り組んではなくSQLNonTransientConnectionExceptionでとにかくクラッシュしています

プラシッドMasvidal:

私は、映画発券Javaアプリケーションに取り組んでいます。椅子のグリッドがあり、ユーザが選択ブックへのすべての椅子は、その後、(mysqlデータベース内の行を挿入し)、それを予約する場合は[OK]を押します。予約のいずれかを行うためにふりエントリを複製するため、失敗した場合、それらのすべてがロールバックされます。ボタン「買い」私はリスニング、それを行うには:

    case "buy":         
        try {
        boolean success = true;         
            for(Booking b : bookingsToDo) {
                 if(DbConnect.getConnection().getAutoCommit())
                     DbConnect.getConnection().setAutoCommit(false);

                        success = controllerBooking.insertBooking(b);

                if(!success) {
                    JOptionPane.showMessageDialog(frameMain, "Error occurred, booking failed");

                    DbConnect.getConnection().rollback();                                               
                } 
            }

            if(success) {
                JOptionPane.showMessageDialog(frameMain, "Booking done");

                DbConnect.getConnection().commit();

            }

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        break;

実際にすべての予約が逆転しているので、これは、働いています。しかし、いずれにせよ投げている:java.sql.SQLNonTransientConnectionExceptionを:

とき自動コミット=真のロールバックを呼び出すことはできません

そのプログラムは、失敗します。それはどのようにロールバックがある可能性がある作業とメッセージを「ロールバックすることはできません」投げ同時に?私はすべてのループににsetAutoCommit(false)をやっているとき、どのようにだろうか?

danblack:

DbConnect.getConnection() 新しい接続にその呼ばれるたびになっています。

オートコミットは、接続ごとに設定されています。したがって、あなたは別の接続でロールバックされます。controllerBookingも同じ接続を使用する接続の参照を必要とします。

そう:

        con = DbConnect.getConnection(); 
        con.setAutoCommit(false);

        for(Booking b : bookingsToDo) {
            success = controllerBooking.insertBooking(con, b);

            if(!success) {
                JOptionPane.showMessageDialog(frameMain, "Error occurred, booking failed");

                con.rollback();                                               
                break;
            } 
        }
        con.commit();

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=27562&siteId=1