@Clear(Tx.class)
public String forceToComplete() {
//此处有一个循环,目的是循环中的更新操作互相不影响
updateStockInOrderToDelete();
}
@Before(Tx.class)
private void updateStockInOrderToDelete() {
Db.update("insert into temp_test values ('test')");
int s = 1/0;
}我的service整个业务层都在Config中注入了事务,所以第一个方法中清除Tx.class,我想问下为什么update中重新租入Tx.class, 不生效。出异常时事务没有回滚。
必须要如下写法才会回滚
Db.tx(() -> {
updateStockInOrderToDelete();
return true;
});
项目:JFinal
如果不使用上面的方式,触发拦截器还可以使用 Aop.get(...)
controller 层的 AOP 是自动触发的,无需上述的方式