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

セーブポイント/ネストされたトランザクションにHibernateSession.doWork(...)を使用するにはどうすればよいですか?

    最初のjava.sql.SQLException: IJ031040 インポート中の特定の結果に関連しているようです。後で別のjava.sql.SQLExceptionに置き換えられました 管理対象トランザクションのロールバックを禁止します。しかし、ネイティブSQLステートメントを発行することで、最終的に問題を解決できました。

    // Mark the current state as SAVEPOINT...
    Session session = this.em.unwrap(Session.class);
    session.doWork(new Work() {
        @Override
        public void execute(Connection connection) throws SQLException {
            connection.prepareStatement("SAVEPOINT TRY_POSSIBILITY").executeUpdate();
        }
    });
    
    // 
    // Do all the risky changes... verify... decide...
    // 
    
    // Rollback to SAVEPOINT if necessary!
    session.doWork(new Work() {
        @Override
        public void execute(Connection connection) throws SQLException {
            connection.prepareStatement("ROLLBACK TO SAVEPOINT TRY_POSSIBILITY").executeUpdate();
        }
    });
    

    これにより、大きなトランザクション内に「ネストされたトランザクション」が可能になり、問題が解決しました。



    1. 2つのデータベースに接続する

    2. PostgreSQLの接続管理:ガイド

    3. チェックボックスはランダムにチェックアウトしています

    4. MySQLWorkbenchへのCSVファイルのロード