spring postgresql jpa jta 事务交错不支持

问题描述 投票:0回答:2

我使用了spring jpa(hibernate)atomikos jta事务。在数据库端执行第一个语句后1分钟内连接关闭(自动pgbouncer)。但是Spring事务继续。 第一个查询执行然后调用 ws 或其他工作(1 分钟过去)。然后第二个查询执行 然后抛出异常 不支持事务交错。

如果我使用非 Xa 数据源,则异常是更改 statestaleobjectException ,行已更新另一个事务或已更新(0)..

spring jpa transactions atomikos pgbouncer
2个回答
0
投票

这是 PostgreSQL 驱动程序中的一个已知限制。在某些情况下会发生这种情况,例如当您在同一事务中重复执行 SQL 调用时。

我不确定您是否有预算,但 Atomikos 免费试用 ExtremeTransactions(该产品的商业版本)包含一个解决方法。

如果有兴趣,您可以在这里申请:http://atomikos.com/Main/ExtremeTransactionsFreeTrial

干杯


0
投票

我也遇到了同样的问题。原因是 Hibernate 处理 XA 连接的方式(除了 PG 驱动程序限制之外)。这描述了它的工作原理: https://vladmihalcea.com/hibernate-aggressive-connection-release/ 更改 Hibernate release_mode 设置解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.