关于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