我如何确定我是否在春季进行交易?

2022-09-04 06:14:15

我在春季服务中坚持不懈有问题。Rest-Controller R 接收请求,并通过某些代码层以复杂方式调用服务 S。S 中的服务方法声明一个事务;这应该是第一次启动事务。但是,该服务的行为就像之前已经启动的事务一样,我的一些数据对象将成为会话的一部分(它们不能)。如何确定交易是否已经有效?我试图注入EntityManager和/或JpaTransactionManager;但两者似乎都无济于事。

如何查看我是否在交易中?

在我搜索所有这些层之前,我想确定这一点,寻找可能的嫌疑人。


答案 1

您可以使用 检查事务是否处于活动状态。但是,您应该在执行服务方法之前调用它。TransactionSynchronizationManager.isActualTransactionActive()

您也可以使用以下命令获取当前交易的状态

TransactionStatus status = TransactionAspectSupport.currentTransactionStatus();

此外,也许对您来说,一个好的点是启用事务日志记录。

log4j.logger.org.hibernate.transaction=DEBUG
log4j.logger.org.springframework.transaction=DEBUG

答案 2

您可以使用

org.springframework.transaction.support.TransactionSynchronizationManager#isActualTransactionActive

推荐