【发布时间】:2021-05-15 14:36:19
【问题描述】:
我遇到了这个异常(有时有效,有时失败)
HibernateException: 无法获取当前线程的事务同步会话
我正在尝试使用 Transactional 将两个实体保存在数据库中,这是伪代码:
@Override
@Transactional
public CompletableFuture<String> commit(MyRequest request) {
String documentCode = "dummy-id";
return commit(documentCode, request)
.thenApply(
taxResult -> {
saveSecondEntity(taxResult); // Exception here
return documentCode;
})
.exceptionally(
throwable -> {
// org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
logThrowable(request, throwable);
return null;
});
}
我进一步检查了TransactionSynchronizationManager.isActualTransactionActive() 在saveSecondEntity 方法中返回false 并且线程名称也不同。
是否可以通过 CompletableFuture 使用 Transactional?
【问题讨论】:
标签: spring-boot hibernate transactions