Spring boot Spring boot回滚多数据源
我的服务在oracle和postgresql数据库中执行删除操作。当其中一个存储库抛出异常时,另一个存储库不会回滚 例如:Spring boot Spring boot回滚多数据源,spring-boot,transactional,Spring Boot,Transactional,我的服务在oracle和postgresql数据库中执行删除操作。当其中一个存储库抛出异常时,另一个存储库不会回滚 例如: public MyService { @Autowired private OracleRep oracleRep; @Autowired private PostgreRep postgreRep ; @Transactional public void delete(Long id){ oracleRep.delete(id); postgreRe
public MyService {
@Autowired private OracleRep oracleRep;
@Autowired private PostgreRep postgreRep ;
@Transactional
public void delete(Long id){
oracleRep.delete(id);
postgreRep.delete(id);
}
}
public OracleRepImpl {
@Autowired private NamedParameterJdbcTemplate namedParameterJdbcTemplate ;
public void delete(Long id){
//do delete
}
}
public PostgreRepImpl {
@Autowired private @Qualifier("postgresql")NamedParameterJdbcTemplate namedParameterJdbcTemplate ;
public void delete(Long id){
//do delete
}
}
我想注释@Transactional不会在数据库之间共享Transactional
我如何实现这种行为 在数据库配置上,我构建了以下内容:
@Bean(name = "postgresqlTransaction")
public DataSourceTransactionManager postgresqlDataSourceTransactionManager(@Qualifier("postgresqlDataSource") DataSource datasource) {
return new DataSourceTransactionManager(datasource);
}
然后我构建一个注释
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional("postgresqlTransaction")
public @interface TransactionalPostgresql {
}
现在:
@TransactionalPostgresql
@Transactional
public void delete(Long id){
oracleRep.delete(id);
postgreRep.delete(id);
}
可能重复的