[英]How to rollback transaction if a sql query fails in spring
我有以下方法:
public void deleteProject(Project project) {
employeeRepository.removeEmployeesFromProject(project);
roleRepository.removeRolesFromProject(project);
projectRepository.deleteProject(project);
}
如果任何 sql 查詢失敗(意外異常),我想回滾並撤消之前完成的操作。 因此,如果第三個查詢失敗,我想撤消前兩個查詢的更改。 有沒有辦法,最好的方法是什么? 我閱讀了@Transactional
注釋,它在一個事務中發送所有查詢。 我認為如果出現故障,可以自動回滾,但只是用@Transactional
注釋方法沒有這樣做。
您還可以使用事務來控制回滾。
try{
Transaction tx = myDAO.getDefaultPersistenceManager().
tx.begin();
deleteProject(project);
tx.commit();
}finally {
if (tx != null && tx.isActive()) {
log.trace("rolling back deleting Project");
tx.rollback();
}
}
您必須使用@EnableTransactionManagement
表示您的 Spring Application 類,以使@Transactional
批注起作用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.