insertIntoB
失败,我希望在 insertIntoA
中提交的任何内容都能够回滚。public class Service {
MyDAO dao;
public void insertRecords(List<Record> records){
for (Record record : records){
insertIntoAAndB(record);
}
}
@Transactional (rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
public void insertIntoAAndB(Record record){
insertIntoA(record);
insertIntoB(record);
}
@Transactional(propagation = Propagation.REQUIRED)
public void insertIntoA(Record record){
dao.insertIntoA(record);
}
@Transactional(propagation = Propagation.REQUIRED)
public void insertIntoB(Record record){
dao.insertIntoB(record);
}
public void setMyDAO(final MyDAO dao) {
this.dao = dao;
}
}
MyDAO dao
是一个接口,使用mybatis映射到数据库,并通过Spring注入进行设置。
现在,如果insertIntoB
失败,从insertIntoA
推送到数据库的所有内容仍然会被记录。我该如何更正这种行为?
编辑:
我修改了类以更准确地描述我想要实现的目标。如果直接运行insertIntoAAndB
,如果有任何问题,回滚就会起作用,但如果我从insertRecords
调用insertIntoAAndB
,如果出现任何问题,回滚将不起作用。