我正在使用Spring-Boot应用程序并使用Spring Boot版本1.5.9。

我有一个包含一组数据库插入的付款转移方法,并且我想使其具有锁定的事务性以避免双重支出。 所以我需要将隔离级别设置为Serializable。 这就是我所做的:

@Transactional(isolation = Isolation.SERIALIZABLE)
public void transfer() {
...
}

问题是调用此方法时出现以下异常:

{
    "timestamp": 1539357851437,
    "status": 500,
    "error": "Internal Server Error",
    "exception": "org.springframework.transaction.InvalidIsolationLevelException",
    "message": "JtaTransactionManager does not support custom isolation levels by default - switch 'allowCustomIsolationLevels' to 'true'",
    "path": "app/transfer"
}

我一般都不是Spring的新手,SpringBoot似乎没有XML配置,可以重写以将JtaTransactionManager bean的allowCustomIsolationLevels设置为true。 但是相反,我应该使用Java批注和@Bean定义,并且我不确定如何实现此目标。

任何帮助将不胜感激!

#1楼 票数:1 已采纳

如果您想使用XML文件进行配置,请在具有@SprintBootApplication批注的主类中添加以下内容:

@ImportResource("classpath:/static/context/name-of-context-file.xml")

它将从路径(其中根是项目中的资源目录)导入XML文件。

根据我在Spring文档中的了解 ,您可能希望研究使用DataSourceTransactionManager还是使用XML文件(如我提到的那样),因为根据该文档(与错误消息状态非常相似,但至少可以选择使用设置)

JTA不支持自定义隔离级别。

我知道我链接的页面很长,但是如果您只是在页面上查找“自定义隔离”,它将其缩小为三个选项,其中两个彼此相邻。

希望这可以帮助。

  ask by abed translate from so

未解决问题?本站智能推荐:

1回复

SpringDataJPA事务定制隔离级别

给定以下场景:我有一个使用Spring Boot @SpringBootApplication运行的应用程序,并在application.properties使用Spring Data JPA数据源进行设置: 且没有其他java / xml配置。 我有几个服务: 和存储库: 正如
2回复

为什么@Transactional隔离级别在使用SpringDataJPA更新实体时不起作用?

对于这个基于spring-boot-starter-data-jpa依赖项和H2内存数据库的实验项目,我定义了一个具有两个字段( id和firstName )的User实体,并通过扩展CrudRepository接口声明了一个UsersRepository 。 现在,考虑一个简单的控制器,它提供两个
1回复

SpringBoot事务隔离级别

我有这个项目试图检查事务隔离。 我从 READ_UNCOMMITTED 级别开始,但它不起作用。 代码非常简单。 主要类 控制器 服务 Repository 是一个简单的 SpringData 存储库 应用程序属性 基本上我在 Chrome 中打开 2 个标签并访问 updateAccount2R
2回复

SpringBoot事务注释在类到类级别的传播

我有3个类和一些方法,A类有一个方法 @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) 从这个方法中,我叫class2 > methodA 从这个方法class3 met
1回复

警告:JPA不支持自定义隔离级别,因此在启动作业时可能不会采取锁定措施

在我的应用程序(Spring Boot、Spring Data JPA、Spring Batch、Postgres DB)启动期间,我收到这样的警告: 我对 Spring Boot 隔离级别做了一些研究,我们有: DEFAULT 、 READ_COMMITTED 、 READ_UNCOMMITTED
1回复

如何更改SpringBatch事务隔离级别

我正在尝试使用下面的代码启动JobLauncher 我在batchjob.xml中配置了具有相同ID的作业 batchjob.xml 有一段时间我收到下面提到的错误消息 PreparedStatementCallback; SQL [插入到BATCH_JOB_INSTANCE
4回复

SpringHibernateTemplate:它如何处理事务?

你能解释一下,幕后发生了什么? 在Spring中使用此模板时的事务管理绝对不清楚。 如果我调用所有使用相同Hibernatetemplate的10个DAO方法并且我一个接一个地调用它们怎么办? 每个方法都在自己的事务中运行? 这不是有效的不是吗?
1回复

Spring@事务隔离传播

可以在同一事务之间更改隔离级别 我有一个用例,我希望使用SpringDataJpa的saveAndFlush持久化的未提交数据可在不同事务中使用,或者使内部事务提交数据,但在外部事务中发生任何异常的情况下应该能够回滚 这是必需的,因为我想更新资源,并且在锁表中会有一个条目,以避免并发更新