可以不可以换种思路,通过 transactionManager 来设定你的事务隔离级别,大致代码如下:
1. @
Transactional(rollbackFor = Exception.class, transactionManager = "transactionManager")
2.
@
Bean(name="transactionManager")
public PlatformTransactionManager transactionManager((@Qualifier("entityManagerFactory") EntityManagerFactory entityManagerFactory){
JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();
jpaTransactionManager.setEntityManagerFactory(entityManagerFactory);
return jpaTransactionManager;
}
3.
@
Bean(name="entityManagerFactory")
public EntityManagerFactory entityManager() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setDatabase(Database.MYSQL);
vendorAdapter.setGenerateDdl(false);
vendorAdapter.setShowSql(true);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setDataSource(mysqlDataSource1());
factory.afterPropertiesSet();
return factory.getObject();
}
4.
@
Bean(name="mysqlDataSource1")
@
ConfigurationProperties(prefix="spring.datasource")
public DataSource mysqlDataSource1() {
return DataSourceBuilder.create().build();
}
5.
配置文件里设置:spring.datasource.hikari.transaction-isolation=READ_UNCOMMITTED
或者代码里自己设置 DataSourceProperty