1

プロジェクトでGroovyバージョンを1.76から2.1にアップグレードしているだけで、次のような単体テストがあります。

try{
    sql.withTransaction{
        sql.execute("Update table set name='tested' where id = 1")
        throw new Exception()
    }
}
catch(ignore){}

//Assert that name has been rolled back from update to 'tested'

以前の 1.76 では、これは正しく機能していました。スローされた例外によってトランザクションがロールバックされ、すべて問題ありませんでした。しかし、これは 2.1 には当てはまりません。例外をスローするように変更すると、RuntimeException正しくロールバックされることがわかりました。

私の推測では、Groovy はチェックされた例外のためにトランザクションをロールバックしなくなりました。これは構成できるものですか? 例外をキャッチするときにすべてのコードを明示的にロールバックするように戻って更新するのではなく、すべてのトランザクションでロールバックすることはできますか?

4

1 に答える 1