@Transactional对MyISAM存储引擎生效的问题?

我在一个public方法中,添加@Transactional(propagation = Propagation.REQUIRED)注解,方法里面通过JPA操作的表存储引擎是MyISAM类型。
理论上,@Transactional对MyISAM类型的表是不会生效的,但是神奇的事,抛出异常后,数据都没有插入进去,"事务"回滚了。

如果我取消@Transactional注解,抛出异常后,数据可以插入进去。

环境:SpringBoot2.0.1+JPA+MySQL5.7

求解,为什么感觉@Transactional对MyISAM生效了?

很抱歉,@Transactional注解只对支持事务的存储引擎(MyISAM不支持)生效,所以理论上不应该在MyISAM存储引擎下起作用。可能是您使用的JPA实现在底层实现机制上已经使用了其他技术来模拟事务行为,从而导致了“事务回滚”的效果。 如果需要确保事务的正常工作,建议使用支持事务的存储引擎,如InnoDB。