Java 如何使用JPA处理冲销?
我正在使用Spring和JPA进行一个金融数据处理项目。我必须处理未来日期的日程安排事务。在每日运行的quartz cron作业中,执行所有调度事务并持久化到实际表 我的问题是,在给定的时间内执行触发器时,一条记录由于某种原因失败,然后所有其他记录都没有执行 我需要执行所有其他事务,失败的事务应该回滚 有办法处理这些事情吗 以下代码块获取所有计划作业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&
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
}
}