Jpa 计划内的Repository.Save()不起作用
我有一个在调度程序中调用的repository.save()方法。但它并没有将任何内容保存到数据库中。 下面是我的时间表Jpa 计划内的Repository.Save()不起作用,jpa,spring-transactions,Jpa,Spring Transactions,我有一个在调度程序中调用的repository.save()方法。但它并没有将任何内容保存到数据库中。 下面是我的时间表 @Component @Transactional @Slf4j public class WomConditionActionJob { @Autowired private Environment env; @Autowired private ECCRepository eCCRepository; @Autowired private WOCRepositor
@Component
@Transactional
@Slf4j
public class WomConditionActionJob {
@Autowired
private Environment env;
@Autowired
private ECCRepository eCCRepository;
@Autowired
private WOCRepository wOCRepository;
@Autowired
private PSRepository pSRepository;
@Scheduled(fixedDelayString = "${wCATrigger.polling.frequency}", initialDelayString = "${wCATrigger.initial.delay}")
public void execute() {
try {
final PauseStatus pause = pSRepository.findByPSName(PSName.PAUSE);
pauseCondition(pause,threshold);
} catch (Exception e) {
log.error("Exception Occured {}", e);
}
}
private void pauseCondition(final PauseStatus pause, final Integer threshold) {
WOTCondition wotCId = workOrderConditionRepository.findById(1).get();
wotCId.setPauseStatus(pause);
wotCId.setIsUserAction(Boolean.FALSE);
workOrderConditionRepository.save(wotConditionbyId);
conditionCount.setErrorCount(0);
errorConditionCountRepository.save(conditionCount);
}
}
我尝试使用saveAndFlush(),但那一次出现了以下错误
[pool-2-thread-1]|错误|[o.s.s.s.TaskUtils$LoggingErrorHandler.handleError(96)]|计划任务中出现意外错误。
org.springframework.transaction.UnexpectedRollbackException:事务已回滚,因为它已被标记为仅回滚
位于org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:873)
位于org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:710)
conditionCount变量来自哪里?它只是一个模型。当我简化代码时,它已经删除了。忽略这个保存。好的,根据我的经验,它必须是一个以前的错误消息,告诉您错误的根本原因,另一方面,我解决这个问题的第一个方法是创建一个单独的bean来执行事务操作,并从schedulerWhere来调用它conditionCount变量?它只是一个模型。当我简化代码时,它已经删除了。好吧,根据我的经验,它必须是之前的错误消息,告诉您错误的根本原因,另一方面,我解决这个问题的第一个方法是创建一个单独的bean来执行事务操作,并从调度程序调用它