1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SpringBootの@Transactionalが効かない!

Posted at

結論

DIでインジェクトしたクラスのpublicメソッドじゃないとだめ。

それまでの流れとか

SpringBootのCommandLineRunnerを使ってバッチ処理を作っていました。
もともと入力のCSVから別形式のCSVへの変換だったのですが、仕様変更で急遽DB操作を行うことになり大慌てで対応することに。
今後改修もないようなちょっとしたバッチ処理なのでJDBCTemplateで実装することにしました。

1ステップ処理でワークテーブルをdelete-insertで洗い替えするだけなので、トランザクション不要でExitコードがエラーなら後続バッチを動かさなきゃいいかな、と考えていたのですが運用上ロールバック欲しいらしいので後付けで対応。

publicメソッドにしか@Transactionalをつけてもだめ。

publicメソッドにしか@Transactionalつけられなかったはず、と考えながら実装しても機能せず:0

このあたりを読んでみるとAOPProxy使っているから、なのかな。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?