我有一个函数,该函数使用javax事务修改两个表。
@Transactional //javax transaction
public PayoutTransaction createPayoutTxnAndUpdateDailyPayout(
PayoutTransaction payoutTransactionModel, List<DailyPayout> dailyPayouts) throws Exception {
try {
PayoutTransaction payoutTransaction =
(PayoutTransaction) payoutTransactionDao.save(payoutTransactionModel);
updateTransactionId(null, DailyPayoutStatus.PICKED, dailyPayouts);
return payoutTransaction;
} catch (Exception exc) {
LOGGER.error("Error while creating payout transaction with exception: {}",
CommonUtil.exceptionFormatter(exc));
throw exc;
}
}
updateTransactionId函数
private void updateTransactionId(Long payoutId, DailyPayoutStatus dailyPayoutStatus,
List<DailyPayout> dailyPayouts) throws Exception {
List<Long> dailyPayoutIds = new ArrayList<>();
int retryCount = dailyPayouts.get(0).getRetryCount();
dailyPayouts.stream().forEach(dailyPayout -> dailyPayoutIds.add(dailyPayout.getId()));
if (!NullOrEmptyCheckerUtil.isNullOrEmpty(payoutId)) {
dailyPayoutDao.updatePayoutTransactionId(dailyPayoutIds, payoutId, DailyPayoutStatus.SUCCESS);
} else {
dailyPayoutDao.updateDailyPayoutStatus(dailyPayoutIds, DailyPayoutStatus.NOT_PICKED,
retryCount + 1);
}
}
现在我的保存中还包含这样的春季交易
@Override
@Transactional
public Object save(final Object object) {
Serializable id = hibernateTemplate.save(object);
return get(object.getClass(), id);
}
现在,如果我的updateTransactionId函数中的任何内容中断,则不会对我的save函数进行回滚。 据我所知,父事务(javax事务)应该覆盖我的Spring事务,并且应该回滚未发生的保存功能数据。