Java 如何使用JPA处理冲销?

Java 如何使用JPA处理冲销?,java,spring,hibernate,jpa,quartz-scheduler,Java,Spring,Hibernate,Jpa,Quartz Scheduler,我正在使用Spring和JPA进行一个金融数据处理项目。我必须处理未来日期的日程安排事务。在每日运行的quartz cron作业中,执行所有调度事务并持久化到实际表 我的问题是,在给定的时间内执行触发器时,一条记录由于某种原因失败,然后所有其他记录都没有执行 我需要执行所有其他事务,失败的事务应该回滚 有办法处理这些事情吗 以下代码块获取所有计划作业 public void bankingPaymentSchedullerRun(){ // get all pending job List&

我正在使用Spring和JPA进行一个金融数据处理项目。我必须处理未来日期的日程安排事务。在每日运行的quartz cron作业中,执行所有调度事务并持久化到实际表

我的问题是,在给定的时间内执行触发器时,一条记录由于某种原因失败,然后所有其他记录都没有执行

我需要执行所有其他事务,失败的事务应该回滚

有办法处理这些事情吗

以下代码块获取所有计划作业

 public void bankingPaymentSchedullerRun(){

// get all pending job
List<BankScheduler> bankSchedulers = bankSchedulerDao.findByStatus(ScheduleStatus.PENDING);
Calendar currentDate = DateUtil.getFormatedCalenderDate(DateUtil.currentDate(), "yyyy-MM-dd");
if (bankSchedulers != null) {
  for (BankScheduler bankScheduler : bankSchedulers) {
    LOGGER.info("bankingPaymentSchedullerRun " + bankScheduler.toString());
    //compare from date and to date
    if ((bankScheduler.getFromDate().compareTo(currentDate) <= 0)
        && (bankScheduler.getToDate().compareTo(currentDate)) >= 0) {

             if (bankScheduler.getSchedulerType().equals(SchedulerType.FUND_TRANSFER.toString())) {
                scheduleFundTransfer(bankScheduler);
             }else {
                 scheduleUtilityPayment(bankScheduler);
             }

        }
    }
}

是的,使用适当的异常处理,这样当单个事务失败时,其他事务仍将(尝试)执行

伪码

for(scheduled task from all scheduled tasks) {
   try{
      begin transaction
      do your stuff with jpa 
      commit transaction
   }catch(Exception e){
      rollback transaction, log error and stuff
    }finally{
      release resources
   }

}

通过展示一些演示cron作业如何工作的示例代码,这个问题会更加清楚
for(scheduled task from all scheduled tasks) {
   try{
      begin transaction
      do your stuff with jpa 
      commit transaction
   }catch(Exception e){
      rollback transaction, log error and stuff
    }finally{
      release resources
   }

}