scheduler.resumeJob方法持久化postgresql数据库时报错org.postgresql.util.PSQLException: Cannot change transaction isolation level in the middle of a transaction.
时间: 2024-02-19 19:03:34 浏览: 192
这个错误通常表示您正在尝试在事务过程中更改事务隔离级别。在Spring中,使用注解@Transactional或编程方式开启事务时,会自动将隔离级别设置为默认级别。因此,如果您在该事务中手动更改隔离级别,则会出现此错误。
解决此问题的一种方法是,在更改隔离级别之前提交当前事务。您可以在Quartz任务中手动注入Spring事务管理器,并使用它来提交或回滚事务。
例如:
```java
@Autowired
private PlatformTransactionManager transactionManager;
@Transactional
public void resumeJob(JobKey jobKey) {
// 执行任务前,先提交当前事务
TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition());
transactionManager.commit(status);
// 恢复任务
scheduler.resumeJob(jobKey);
// 任务执行完后,再开启新的事务
status = transactionManager.getTransaction(new DefaultTransactionDefinition());
// ...
}
```
这样,您就可以在恢复任务期间更改隔离级别,而不会出现错误。
阅读全文