[英]Using @Transactional on service method, which updates multiple repositories
Spring 啟動,postgres,spring jpa。
有一個服務,它試圖跨多個存儲庫存儲更改:
class Service {
@Transactional
public void doStuff() {
repo1.delete(...);
repo2.saveAll(...);
repo1.save(...);
}
}
如果出現任何故障,則需要回滾此操作。
在這里,我想到了兩件事:
throw RuntimeException
,則它之前的所有內容都不會回滾。無法提交 JPA 事務; 嵌套異常是 javax.persistence.RollbackException: Error while committing the transaction
我的配置是:
@Configuration
@EnableTransactionManager
@EntityScan
@EnableJpaRepositories
public class DataConfig {}
還嘗試將TransactionTemplate
bean 與它的execute
方法一起使用。 設法克服了第一個問題,但第二個問題仍然失敗。
您可以嘗試通過添加@Transactional(rollbackFor = Exception.class)
這將回滾,即使您的代碼中有異常
class Service {
@Transactional(rollbackFor = Exception.class)
public void doStuff() {
repo1.delete(...);
repo2.saveAll(...);
repo1.save(...);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.