spring+mybatis事务不回滚

对spring,mybatis进行整合时发现事务不能进行回滚处理,上网查了很多资料依旧还没解释,很多都是说要抛出一个runtimeException才能回滚的,但尝试过多种还不能,代码如下:
applicationContext.xml

...






classpath*:/jdbc.properties






































classpath*:com/myframe/security/mapper/*.xml
classpath*:com/topone/**/**/mapper/*.xml





















...


BolgService:

@Service
@Transactional(rollbackFor=Exception.class)
public class BlogService {
@Autowired
private BlogMapper blogMapper;
@Autowired
private BlogflowService blogflowService;

//保存数据
@Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.READ_COMMITTED, readOnly=true)
public String save(Blog entity, Map map) throws Exception{
...
int isok = blogMapper.save(entity); //没发生回滚
BlogFlow vo = new BlogFlow();
//get/set方法
vo.setId();
...
blogflowService.save(vo); //调用blogflowService保存方法
...
}
}


BolgFlowService:

@Service
@Transactional(rollbackFor=Exception.class)
public class BlogflowService {
@Autowired
private BlogMapper blogflowMapper;

//保存数据
@Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.READ_COMMITTED, readOnly=true)
public String save(Blog entity, Map map) throws Exception{
...
entity.setTouserid(null); //故意设置为null,抛出异常
int isok = blogflowMapper.save(entity);
...
}
}


查看数据库后,由于bolgFolw设置为null了,抛出异常,所以没有增加到数据库,但bolgService里已经将一条记录添加数据库里了,没有发生回滚事件,请问是那里的设置出问题了呢,如果用编码式来控制的话是可以回滚的。估计应该是配置或代码写得不对的问题,但看了别人的例子,也是这样写的,不明白原因在那里。

另外,我是用*mapper.java这种方式来实现dao层来。

目录路径为:

com
topone
approval
blog
service
mapper
contorller
entity
blogflow
service
mapper
contorller
entity

你可能感兴趣的:(Spring,iBATIS)