3

このリンクを参照してください: @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) はいつコミットしますか?

B が正解となるにはどうすればよいでしょうか。REQUIRES_NEW で注釈が付けられたメソッドは、外部の中断されたトランザクションが続行される前にコミットされると考えていました。

forループ内の別のBeanからrequires_newで開始されたトランザクションに関して奇妙な動作を見たので、これについて質問しています。Aby が for ループで bob を呼び出した場合と同様です。たとえば、UniqueConstraintViolation が原因でこれらのトランザクションの 1 つがロールバックされた場合、HSQLDB と db2 は断続的に前のトランザクションもロールバックし、断続的に失敗したトランザクションのみをロールバックし、他のトランザクションをコミットします。そして、jboss を再起動したときにのみ動作が変わります。トランザクションが失敗し、前のトランザクションもロールバックする動作が発生すると、ループからの次の呼び出しで jdbcException: Connection closed も発生します。では、まず、requires_new の予想される動作について考えてみましょう。Hibernate、jboss 5、CMT、db2、およびインメモリ HSQLDB を使用しています (1.8 バージョンと 2.2.9 の両方を試しました) ありがとうございます!

4

1 に答える 1

4

だから私はこれが奇妙な振る舞いの理由であることがわかりました

再起動後に jboss が requires_new を無視する

そしてリンクで:

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) はいつコミットしますか?

代替 a は正しい答えなので、その投稿では間違った答えです。

于 2013-03-30T10:25:00.047 に答える