场景还原:使用加了@Transactional注解的方法A,去调用动态切库的方法B,发现切库失败。
原因:一个事务只支持一个数据库,因此在这个事务生效的期间,数据库不会变,因此切库会失败。
复现代码:
@Transactional( rollbackFor = Exception.class )
public void A() {
B();
}
private void B() {
切换数据库
}
场景还原:使用加了@Transactional注解的方法A,去调用动态切库的方法B,发现切库失败。
原因:一个事务只支持一个数据库,因此在这个事务生效的期间,数据库不会变,因此切库会失败。
复现代码:
@Transactional( rollbackFor = Exception.class )
public void A() {
B();
}
private void B() {
切换数据库
}