私は、春のブート(1.4.1)と休止(5.0.1.最終)を使用しています。私は@TransactionalEventListener
ハンドラの中からdbに書き込もうとすると、呼び出しは単に無視されることに気付きました。読み込み呼び出しは正常に動作します。 私がignoreと言うとき、私はdbに書き込みがなく、ログがないことを意味します。私もlog4jdbcを有効にし、ログは残っていないので、休止状態のセッションは作成されませんでした。これから私は、spring-bootのどこかでトランザクションイベントハンドラを特定し、書き込み呼び出しを無視すると考えます。TransactionalEventListenerで書き込みコール/トランザクションが削除されました
ここは例です。私は、接続して
@Transactional(propagation = Propagation.REQUIRES_NEW)
saveUploadEntity
新しいトランザクションに注釈を付けることによって、新しいトランザクションを強制場合
// This function is defined in a class marked with @Service
@TransactionalEventListener
open fun handleEnqueue(event: EnqueueEvent) {
// some code to obtain encodeJobId
this.uploadService.saveUploadEntity(uploadEntity, encodeJobId)
}
@Service
@Transactional
class UploadService {
//.....code
open fun saveUploadEntity(uploadEntity: UploadEntity, encodeJobId: String): UploadEntity {
// some code
return this.save(uploadEntity)
}
}
今行われ、すべてが正常に動作しています。
私は、この書き込みが削除されたとき、完全な沈黙が(再び成功読み込み)ログであることを好みません。既知のバグはありますか?
ハンドラで新しいトランザクションを開始するにはどうすればいいですか?私がhandleEnqueueイベントでPropogation.Requires_newを実行すると、動作しません。
さらに、読み取り/書き込みを正常にログするlog4jdbcを有効にするには、次の設定が春です。
ありがとうございました