当前位置: 代码迷 >> J2EE >> @Transactional,抛错误后不会滚?求解
  详细解决方案

@Transactional,抛错误后不会滚?求解

热度:448   发布时间:2016-04-17 23:45:55.0
@Transactional,,抛异常后不会滚??求解

在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
------解决方案--------------------
你试试不捕获呢?
------解决方案--------------------
你捕捉了,怎么会回滚呢
------解决方案--------------------
就是异常捕获的问题,你自己把异常截留了,又没处理回滚,框架根本就不知道,就正常提交了
  相关解决方案