赞
踩
@Service @Slf4j public class XXXService extends BaseService<XXX, Long>{ @Resource private XXXRepository XXXRepository; @Resource private PlatformTransactionManager platformTransactionManager; public void findAndSave(....) { for(...){ ... List<XXX> xxxList=find...; saveAll(xxxList); } } @Transactional(readOnly = false) public void saveAll(List<XXX> xxxList) { DefaultTransactionDefinition transactionDefinition=new DefaultTransactionDefinition(); transactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); TransactionStatus status = platformTransactionManager.getTransaction(transactionDefinition); try { ........ XXXRepository.saveAll(xxxList); platformTransactionManager.commit(status); } catch (Exception e) { System.out.println("==========================事务回滚=============================="); System.out.println(e.getMessage()); platformTransactionManager.rollback(status); throw e; } }
注意:由于saveAll方法为内部调用,常用private\protect修饰。但Transactional只对public修饰的方法事务才有效。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。