我有一個要求,要從用戶界面執行用戶操作的事務組。如果以下三項中的任何一項失敗,則需要回溯整個3項交易。 1)在一個表中 2)更新另一個表 3)插入數據的數據發送電子郵件給用戶羣組事務 - 彈簧數據JPA- Boot1.4.2
我試圖使用Spring數據JPA,我能達到我的要求?如果沒有,請指導如何實現。 如果我用下面的代碼,
@RequestMapping(value = "/assets/addEmployeeAsset", method = RequestMethod.POST)
public void addEmployeeAsset(@RequestBody EmployeeAsset employeeAsset) {
System.out.println("inside addEmployeeAsset restcontroller--");
employeeAssetDao.save(employeeAsset);
assetDao.updateAssetAfterAllocation(employeeAsset.getAssetid());
assetService.sendEmail();
}
public interface EmployeeAssetDao extends CrudRepository<EmployeeAsset, Long> {
}
public interface AssetDao extends CrudRepository<Asset,Long>{
@Modifying(clearAutomatically = true)
@Query(value = "update Asset a SET a.active = ?1 where a.assetid=?2")
List<Asset> updateAssetAfterAllocation(String active,String assetid);
}
@RestController
public class AssetService {
public void sendEmail();
}
恕我直言,你的設計是錯誤已...您的控制器應該只是一個轉換層/集成層,它應該叫服務層它執行這些動作。你在控制器中的行應該在一個本身應該標記爲「@ Transactional」的服務中。從您的控制器調用服務。 –