お世話になります。
一度に行う処理の中で、
InsertとUpdateをメソッドを分けて、実行する必要があり、
どちらかでエラーが発生した場合に、両方の処理をロールバックさせたいと思っています。
InsertはJpaRepositoryのsaveメソッドを使用しており、
Updateはリポジトリに@Queryでメソッドを定義しています。
リポジトリに@Transactionalをつけているため、
どちらかのメソッドが失敗した際は失敗した方だけロールバックされているのですが、
両方のメソッドに一つのトランザクションをかける方法がわかりません。
ご教示頂けますと幸いです。
以下、ソースコードです。
@Transactional //repository public interface HogeRepository extends JpaRepository<Hoge, Long>, JpaSpecificationExecutor<Hoge> { @Modifying @Query("hogehoge...") Integer updateHoge(@Param("hoge") Long hoge);
//controller try { hogeRepository.saveAll(hoges); Integer updateResult = hogeRepository.updateHoge(hoge); } catch (Exception e) { return doGet(); }
リポジトリではなくサービス側に@Transactionalつけるわけにはいかないのでしょうか?
あなたの回答
tips
プレビュー