Resource.java @RequestMapping(value = "/updateDetails", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) @PreAuthorize("hasRole('" + ROLE_BPM_EAUTH_WF_CLIENT + "')") public ResponseEntity<UpdateStatus> updateDetails(@RequestBody updateRequest updateRequest) throws ServiceException { UpdateStatus response = null; try{ response = controlService.updateDetails(updateRequest); }catch (ControlServiceException controlServiceException) { if(ErrorCodes.ERROR_CODE.FAILED_TO_UPDATE_DETAILS.getCode().equals(controlServiceException.getErrorCode()) || ErrorCodes.ERROR_CODE.FAILED_TO_UPDATE_DETAILS_STALE_DATA_ISSUE.getCode().equals(controlServiceException.getErrorCode())) { final int maxRetryCount = controlService.getMaxRetryCountFromConfig(); response = retryUpdateDetails(updateRequest, 1, maxRetryCount); } else{ throw controlServiceException; } } return new ResponseEntity<>(response, HttpStatus.OK); } Service.java @Override@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { ServiceException.class })public UpdateStatus updateDetails(UpdateRequest updateRequest) throws ServiceException { Object object = updateRequest.getObject(); updateDetailActions(updateRequest); return InformationTransformer.transformStatus(object, true);} private void updateDetailActions(updateRequest updateRequest) throws ServiceException { DefaultDetails defaultDetails = null; if (updateRequest.getEventType().equals(EventTypeEnum.A.getValue())) { updateStatusToA(updateRequest); }
2 回答

動漫人物
TA貢獻1815條經驗 獲得超10個贊
你如何訪問你的Service
班級?對于要創建的 Spring 事務,您需要通過 Spring Application Context 訪問您的類,然后而不是通過例如創建一個新實例(new Service()
將不起作用),也不會通過變量訪問實例或此類(即使變量它的值最初是由 spring 設置的)

慕仙森
TA貢獻1827條經驗 獲得超8個贊
當您在非事務上下文中執行數據庫事務時,通常會發生此異常。對于執行數據庫事務的方法,您在 spring 中使用 @Transactional 注釋。有關事務管理的詳細信息,您可以參考 https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/transaction.html
添加回答
舉報
0/150
提交
取消