Spring 事务
?
Spring 事务不回滚的问题关键是:不能对该异常用try...catch处理,否则不会回滚事务!
?
@Service("systemConfigService")public class SystemConfigServiceImpl extends AbstractGenericService<SystemConfig> implements SystemConfigService {@Resource(name="systemConfigDAO")private SystemConfigDAO systemConfigDAO;@Overridepublic void deleteByIds(String id) {if(id != null){String[] ids = id.split(",");try {SystemConfig systemConfig = systemConfigDAO.get(2);systemConfig.setValue("测试值");systemConfigDAO.update(systemConfig);// 执行如下操作,数据库将报唯一索引重复问题// Caused by: java.sql.BatchUpdateException: Duplicate entry 'PORTAL.CITYCODE' for key 'name'SystemConfig systemConfig2 = systemConfigDAO.get(2);systemConfig2.setName("PORTAL.CITYCODE");systemConfigDAO.update(systemConfig2);} catch (Exception e) {log.error(e);// 如果注释掉throw new RuntimeException,那么事务将不能回滚,因为spring捕捉不到Exception// 解决办法,去掉try catch,或者在cache中抛出异常以便spring捕获throw new RuntimeException("运行时出错!"); }}}}