当前位置: 代码迷 >> J2EE >> 关于Spring事务控制解决方法
  详细解决方案

关于Spring事务控制解决方法

热度:29   发布时间:2016-04-22 01:53:35.0
关于Spring事务控制
@Override
public void addUser(User user) {
  try{
  Log log = new Log();
  log.setContent("添加了"+user.getUsername()+"用户");
  logDao.addLog(log);
  userDao.save(user);
  }catch (Exception e) {
  e.printStackTrace();
  }
}

这个是Service层UserService类的addUser()方法,我把service层配置了事务
现在如果userDao.save(user) 这个方法出错了,logDao.addLog(log) 这条记录会回滚,这是正确的
但是如果
@Override
public void addUser(User user) {
  try{
  Log log = new Log();
  log.setContent("添加了"+user.getUsername()+"用户");
  logDao.addLog(log);
  userDao.save(user);
  throw new RuntimeException();
  }catch (Exception e) {
  e.printStackTrace();
  }
}
这样执行完userDao.save(user);(假如这个方法是正确的)往下执行时抛出异常,结果是这两条数据都插进去了,我想要的是这两条也回滚 应该怎么做

------解决方案--------------------
方法里try catch 或者抛出 都不会回滚的 必须把try cath删了
------解决方案--------------------
要想回滚,就要在catch中写个回滚
------解决方案--------------------
Java code
public void addUser(User user)throws Exception {  try{  Log log = new Log();  log.setContent("添加了"+user.getUsername()+"用户");  logDao.addLog(log);  userDao.save(user);  throw new RuntimeException();  }catch (Exception e) {  e.printStackTrace();  }}
------解决方案--------------------
声明addUser方法抛出XXXException
  相关解决方案