数据库引擎不支持事务
MySql 的 MyISAM 引擎不支持回滚,如果需要自动回滚事务,需要将MySql的引擎设置成InnoDB;
方法不是 public 修饰符
@Transactional
void test1() {
ResOrder resOrder = new ResOrder();
resOrder.setOrderNo(123);
orderDomain.save(resOrder);
int a = 1/0;
ResProduct resProduct = new ResProduct();
resProduct.setProductName("商品");
productDomain.save(resProduct);
}
// 订单成功入库,商品未入库, 事务失效
非public修饰的方法,spring无法生成动态代理
方法被final、static 修饰
@Transactional
public final void test1() {
ResOrder resOrder = new ResOrder();
resOrder.setOrderNo(123);
save(resOrder);
int a = 1/0;
ResOrder resOrder1 = new ResOrder();
resOrder1.setOrderNo(1234);
save(resOrder1);
}
// 订单成功入库,商品未入库, 事务失效
方法被final修饰,那么在它的代理类中,就无法重写该方法,从而无法实现事务。当然被static 修饰也不行。