在service层使用了@Transactional(rollbackFor=Exception.class) ,
在某个方法中故意报异常后,居然不回顾,为什么?
@Service
@Transactional(rollbackFor=Exception.class)
public class UserBaseServiceImpl implements IUserBaseService {
@Autowired
private GenericDao<UserBase, String> userBaseDao;
@Autowired
private GenericDao<UserPosition, String> userPositionDao;
@Autowired
private GenericDao<UserInfo, Integer> userInfoDao;
/**
* 数组越界异常后,数据不回顾,why?
* @param Password
* @param userName
* @param imei
*/
@Override
public void registerTest(String Password, String userName, String imei) {
try {
//此处省略若干代码,如下代码运行正常
//..................
userBaseDao.save(entity);
//.................
userInfoDao.save(entity);
//.................
userPositionDao.save(entity);
//以下为异常代码,数组越界!
String [] str=new String[]{"11"};
System.out.println(str[2]);
} catch (Exception e) {
e.printStackTrace();
}
}
}
------解决方案--------------------
回滚好像是针对一些特定异常的
参考:http://blog.sina.com.cn/s/blog_6ac4c6cb01018pbl.html
------解决方案--------------------
你试试不捕获呢?
------解决方案--------------------
你捕捉了,怎么会回滚呢
------解决方案--------------------
就是异常捕获的问题,你自己把异常截留了,又没处理回滚,框架根本就不知道,就正常提交了