0

@Transactional(REQUIRES_NEW)を呼び出す@Transactional(REQUIRED)メソッドがあります。私が見ているデフォルトの動作は、内部トランザクションがロールバックされているが、外部トランザクションがコミットされていることです。これは予想される動作ですか?

4

1 に答える 1

2

はい、それは予想される動作です。内側のトランザクションが実行されている間、外側のトランザクションは一時停止されます。内部トランザクションが終了すると(コミットかロールバックかに関係なく)、外部トランザクションが再開されます。

ところで、ドキュメントには次のように書かれています。

PROPAGATION_REQUIRES_NEWは、PROPAGATION_REQUIREDとは対照的に、影響を受けるトランザクションスコープごとに完全に独立したトランザクションを使用します。その場合、基礎となる物理トランザクションは異なり、したがって、外部トランザクションは内部トランザクションのロールバックステータスの影響を受けずに、独立してコミットまたはロールバックできます。

于 2012-09-11T17:55:24.693 に答える