簡體   English   中英

如果 sql 查詢在 spring 中失敗,如何回滾事務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM