gpt4 book ai didi

Hibernate - 两个不同的事务将成功提交

转载 作者:行者123 更新时间:2023-12-03 11:54:17 27 4
gpt4 key购买 nike

我正在使用两个不同的数据库。我使用两个不同的 session 从两个数据库中删除记录。代码如下:

try{
Session session1 = factory.getSession();
Transaction trn1 = session1.beginTrn();
session1.delete(foobar);
trn1.commit();

Session session2 = jbomContext.getGrahpSession();
Transaction trn2 = session2.beginTrn();
session2.delete(box);`enter code here`
trn2.commit();
}catch(Exception e){
trn1.rollback();
trn2.rollback();
}

在这里,问题是如果错误发生在事务 2 中,我无法回滚事务 1。我对两阶段提交有一些想法。但是如果两个事务都会发生异常,我需要回滚事务。

最佳答案

您不能回滚 tr1(如果 tr2 的提交失败),因为届时 tr1 将已经提交。至少我没有看到在 hibernate 中这样做的本地方式。如果您使用的是成熟的 Java EE App Server,或者可以通过其他方式启用它(例如 this 和 Spring 的 JtaTransactionManager),您可能可以做的是使用分布式事务(JTA 数据源)。

关于Hibernate - 两个不同的事务将成功提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7515160/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com