鉴于以下情况:
我有一个运行Spring Boot @SpringBootApplication
的应用程序,并使用application.properties
中的Spring Data JPA数据源进行设置:
spring.datasource.url=jdbc:mysql://foo.bar.com:12345
spring.datasource.username=user
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
并没有额外的java / xml配置。
我有几项服务:
@Service
public class ProjectServiceImpl implements ProjectService {
@Autowired
ProjectRepository projectRepository;
@Override
@Transactional(isolation = Isolation.SERIALIZABLE)
public Project save(Project project) {
// there might be some additional logic here, besides the action on repository
return projectRepository.save(project);
}
}
和存储库:
@Repository
public interface ProjectRepository extends CrudRepository<Project, Long> {}
正如上面的代码所示,我发现自己需要{,1}}隔离级别由于应用程序水平扩展而偶尔会将冲突的数据保存到DB(简称SERIALIZABLE
)是不够的。现在,在尝试执行@Transactional
操作时,我得到一个例外:
projectService.save(project)
是否可以使用java配置启用这些自定义隔离级别?
答案 0 :(得分:0)
您可以通过在allowCustomIsolationLevels
TransactionManager
transactionManager.setAllowCustomIsolationLevels(true);