gpt4 book ai didi

java - jta 事务管理器未回滚事务

转载 作者:行者123 更新时间:2023-12-01 15:42:28 28 4
gpt4 key购买 nike

我是 Spring 和 hibernate 新手,请帮忙,

我正在使用(Jboss 6.0 Final 作为服务器)

org.springframework.transaction.jta.JtaTransactionManager

作为具有属性设置的 bean

transactionManagerName 为 java:/TransactionManager 和

userTransactionName 为 java:comp/UserTransaction。

在我设置的代码中

jtaTxManager
属性 setter 。

然后

javax.transaction.TransactionManager tx = jtaTxManager.getTransactionManager();

然后使用

tx.begin()
开始事务声明。

我用过

sessionFactory.getCurrentSession()  
获取 hibernate session

我终于用了

tx.commit() 

我正在使用 hibernate 在 jta 事务中保存多条记录但是如果在某些记录之间发生任何数据库错误,例如在 tx.commit() 上抛出约束违反异常,则为

javax.transaction.RollbackException
当 catch 时,我曾经调用 tx.rollback() 但我的事务没有回滚并且在 tx.rollback() 上出现以下异常。我没有在 hibernate 属性中设置任何类型自动提交属性。

但是我的第一条记录保存在数据库中,理想情况下它们不应该保存,但是在回滚时会发生此异常,所以我认为这就是它们被保存的原因。

java.lang.IllegalStateException: BaseTransaction.rollback - [com.arjuna.ats.internal.jta.transaction.arjunacore.notx] [com.arjuna.ats.internal.jta.transaction.arjunacore.notx] no transaction!at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.rollback(BaseTransaction.java:158)at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.rollback(BaseTransactionManagerDelegate.java:114)

最佳答案

这个问题是由于数据源配置造成的,之前忘记提到了,

从 application-context.xml 中删除

org.springframework.jdbc.datasource.DriverManagerDataSource

而不是这个,使用oracle-xa-ds.xml中配置的jboss的jndi数据源

关于java - jta 事务管理器未回滚事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7818829/

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