コードの途中でトランザクションを手動で管理
ロールバックポイントの設定
//手動トランザクション
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
TransactionStatus status = transactionManager.getTransaction(def);
ロジックに基づくロールバック操作の手動選択
synchroniseResponseDto.setMessage("同期に成功した");
synchroniseResponseDtoList.add(synchroniseResponseDto);
transactionManager.commit(status);
}catch(Exception e) {
synchroniseResponseDto.setMessage(message);
synchroniseResponseDto.setSuccess(false);
synchroniseResponseDtoList.add(synchroniseResponseDto);
transactionManager.rollback(status);
}
もっと簡単な方法があります:
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
これは現在のトランザクションにロールバックフラグを設定することになり、単純ですが、上記のアプローチほど柔軟ではありません